Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Che cos'è il tipo di dati SYSNAME in SQL Server?

sysname è un tipo di dati integrato limitato a 128 caratteri Unicode che, IIRC, viene utilizzato principalmente per memorizzare i nomi degli oggetti durante la creazione di script. Il suo valore non può essere NULL

È fondamentalmente lo stesso che usare nvarchar(128) NOT NULL

MODIFICA

Come menzionato da @Jim nei commenti, non credo che ci sia davvero un business case in cui useresti sysname ad essere onesti. Viene utilizzato principalmente da Microsoft durante la creazione del sys interno tabelle e stored procedure, ecc. all'interno di SQL Server.

Ad esempio, eseguendo Exec sp_help 'sys.tables' vedrai che la colonna name è definito come sysname questo perché il valore di this è in realtà un oggetto in sé (una tabella)

Non me ne preoccuperei troppo.

Vale anche la pena notare che per quelle persone che usano ancora SQL Server 6.5 e versioni precedenti (ci sono ancora persone che lo usano?) il tipo integrato di sysname è l'equivalente di varchar(30)

Documentazione

sysname è definito con la documentazione per nchar e nvarchar , nella sezione commenti:

nome di sistema è un tipo di dati definito dall'utente fornito dal sistema che è funzionalmente equivalente a nvarchar(128) , tranne per il fatto che non è annullabile. nome di sistema viene utilizzato per fare riferimento ai nomi degli oggetti del database.

Per chiarire le osservazioni di cui sopra, per impostazione predefinita nome di sistema è definito come NOT NULL è certamente possibile definirlo nullable. È anche importante notare che la definizione esatta può variare tra le istanze di SQL Server.

Utilizzo di tipi di dati speciali

Il nome di sistema il tipo di dati viene utilizzato per le colonne della tabella, le variabili e i parametri storedprocedure che memorizzano i nomi degli oggetti. La definizione esatta di sysname è correlato alle regole per gli identificatori. Pertanto, può variare tra istanze di SQL Server. nome di sistema funzionalmente è uguale a nvarchar(128) tranne che, per impostazione predefinita, sysname NON è NULLA. Versioni precedenti di SQL Server, sysname è definito come varchar(30).

Alcune ulteriori informazioni su sysname consentendo o meno NULL i valori possono essere trovati qui https://stackoverflow.com/a/52290792/300863

Solo perché è l'impostazione predefinita (NON NULL) non garantisce che lo sarà!