sysname
ist ein eingebauter Datentyp, der auf 128 Unicode-Zeichen begrenzt ist und, IIRC, hauptsächlich zum Speichern von Objektnamen beim Erstellen von Skripten verwendet wird. Sein Wert darf nicht NULL
sein
Es ist im Grunde dasselbe wie die Verwendung von nvarchar(128) NOT NULL
BEARBEITEN
Wie von @Jim in den Kommentaren erwähnt, glaube ich nicht, dass es wirklich einen Geschäftsfall gibt, in dem Sie sysname
verwenden würden ehrlich gesagt. Es wird hauptsächlich von Microsoft beim Erstellen des internen sys
verwendet Tabellen und gespeicherte Prozeduren usw. innerhalb von SQL Server.
Beispielsweise durch Ausführen von Exec sp_help 'sys.tables'
Sie werden sehen, dass die Spalte name
ist definiert als sysname
das liegt daran, dass der Wert von this eigentlich ein Objekt an sich ist (eine Tabelle)
Ich würde mir darüber keine allzu großen Sorgen machen.
Es ist auch erwähnenswert, dass für diejenigen, die noch SQL Server 6.5 und niedriger verwenden (gibt es noch Leute, die es verwenden?), der eingebaute Typ von sysname
ist das Äquivalent von varchar(30)
Dokumentation
sysname
wird mit der Dokumentation für nchar
definiert und nvarchar
, im Abschnitt „Bemerkungen“:
Systemname ist ein vom System bereitgestellter benutzerdefinierter Datentyp, der funktionell äquivalent zu nvarchar(128) ist , außer dass es nicht nullable ist. Systemname wird verwendet, um Datenbankobjektnamen zu referenzieren.
Um die obigen Bemerkungen zu verdeutlichen, standardmäßig Systemname ist als NOT NULL
definiert Es ist sicherlich möglich, es als nullable zu definieren. Es ist auch wichtig zu beachten, dass die genaue Definition zwischen Instanzen von SQL Server variieren kann.
Spezielle Datentypen verwenden
Der Systemname Der Datentyp wird für Tabellenspalten, Variablen und gespeicherte Prozedurparameter verwendet, die Objektnamen speichern. Die genaue Definition vonsysname bezieht sich auf die Regeln für Identifikatoren. Daher kann es zwischen Instanzen von SQL Server variieren. Systemname ist funktional dasselbe wie nvarchar(128) außer dass standardmäßig sysname ist NICHT NULL. In früheren Versionen von SQL Server, sysname ist als varchar(30) definiert.
Einige weitere Informationen zu sysname
Erlauben oder Verbieten von NULL
Werte finden Sie hier https://stackoverflow.com/a/52290792/300863
Nur weil es der Standardwert ist (nicht NULL zu sein), ist das noch lange keine Garantie dafür!