Forniremo ai nostri clienti uno strumento che (tra le altre cose) crea un nuovo database SQL Server e voglio essere in grado di eseguire la convalida di base sul nome del database che forniscono. La documentazione di SQL Server spiega quali caratteri sono validi nel nome di un database. Tuttavia, la documentazione è apparentemente errata, perché posso creare database con nomi che violano le regole documentate.Quali caratteri sono validi in un nome di database di SQL Server?
In base alla documentazione di SQL Server per CREATE DATABASE, i nomi dei database devono essere conformi alle regole per gli identificatori; e le regole per identifiers dipendono dal livello di compatibilità del database. Quando il livello di compatibilità è 100 (che, secondo SQL Server Management Studio, significa "SQL Server 2008"), il nome deve iniziare con una lettera Unicode, _
, @
o #
; seguito da una o più lettere, numeri, @
, $
, #
o _
. La documentazione indica chiaramente che non sono consentiti spazi incorporati o caratteri speciali.
Questa vola di fronte delle prove disponibili, perché posso utilizzare SQL Server Management Studio per creare un database il cui nome è This & That | "Other"
- che non solo contiene spazi incorporati (esplicitamente vietato), ma contengono caratteri speciali (|
, "
) che non sono nemmeno validi in un nome file. Ho controllato, e il livello di compatibilità del database è effettivamente "SQL Server 2008 (100)", anche se il suo nome è documentato come non valido a quel livello di compatibilità.
Heck, posso anche fare CREATE DATABASE " "
(sì, che è un unico spazio), che dimostra che il primo carattere fa non devono essere una lettera, sottolineare, al segno, o cancelletto.
Quindi suppongo che la mia domanda sia, quali caratteri sono validi per in un nome di database di SQL Server? Esistono regole documentate coerenti con il comportamento effettivo di SQL Server?
Qual è il valore nell'utilizzo di caratteri non validi o estremamente inusuali per un database, tabella, nome ecc.? Oltre a garantire che coloro che devono usare il tuo database maledicano il tuo nome ... –
Spetterà agli utenti decidere cosa chiamare il database. Se vogliono scegliere un nome miserabile, la mia comprensione a questo punto è che non vogliamo fermarli. (Potrebbe cambiare, ma almeno voglio sapere con cosa dobbiamo lavorare.) –