sql >> Database >  >> RDS >> Sqlserver

Wat is het SYSNAME-gegevenstype in SQL Server?

sysname is een ingebouwd datatype dat beperkt is tot 128 Unicode-tekens en dat, IIRC, voornamelijk wordt gebruikt om objectnamen op te slaan bij het maken van scripts. De waarde kan niet NULL zijn

Het is in principe hetzelfde als het gebruik van nvarchar(128) NOT NULL

BEWERKEN

Zoals vermeld door @Jim in de opmerkingen, denk ik niet dat er echt een businesscase is waarbij je sysname zou gebruiken om eerlijk te zijn. Het wordt voornamelijk gebruikt door Microsoft bij het bouwen van de interne sys tabellen en opgeslagen procedures enz. binnen SQL Server.

Bijvoorbeeld door Exec sp_help 'sys.tables' . uit te voeren je zult zien dat de kolom name is gedefinieerd als sysname dit komt omdat de waarde hiervan eigenlijk een object op zich is (een tabel)

Ik zou me er niet al te veel zorgen over maken.

Het is ook vermeldenswaard dat voor die mensen die nog steeds SQL Server 6.5 en lager gebruiken (zijn er nog mensen die het gebruiken?) het ingebouwde type sysname is het equivalent van varchar(30)

Documentatie

sysname is gedefinieerd met de documentatie voor nchar en nvarchar , in de opmerkingen sectie:

systeemnaam is een door het systeem geleverd, door de gebruiker gedefinieerd gegevenstype dat functioneel equivalent is aan nvarchar(128) , behalve dat het niet nullable is. systeemnaam wordt gebruikt om naar namen van databaseobjecten te verwijzen.

Om de bovenstaande opmerkingen te verduidelijken, standaard systeemnaam is gedefinieerd als NOT NULL het is zeker mogelijk om het als nullable te definiëren. Het is ook belangrijk op te merken dat de exacte definitie kan verschillen tussen exemplaren van SQL Server.

Speciale gegevenstypen gebruiken

De systeemnaam gegevenstype wordt gebruikt voor tabelkolommen, variabelen en parameters voor opgeslagen procedures waarin objectnamen worden opgeslagen. De exacte definitie vansysname heeft te maken met de regels voor identifiers. Daarom kan het variëren tussen exemplaren van SQL Server. systeemnaam is functioneel hetzelfde als nvarchar(128) behalve dat, standaard, sysname is niet nul. Eerdere versies van SQL Server, sysname wordt gedefinieerd als varchar(30).

Wat meer informatie over sysname toestaan ​​of weigeren van NULL waarden zijn hier te vinden https://stackoverflow.com/a/52290792/300863

Alleen omdat het de standaardinstelling is (niet NULL zijn), garandeert niet dat dit ook zo zal zijn!



  1. Hoe kleine letters naar hoofdletters te converteren in SQL Server - UPPER()

  2. PostgreSQL - dynamische waarde als tabelnaam

  3. MySQL-trigger bij gebeurtenissen invoegen/bijwerken

  4. Meerdere datacenterconfiguraties met Galera Cluster voor MySQL of MariaDB