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!