sysnameist ein integrierter Datentyp, der auf 128 Unicode-Zeichen beschränkt ist und in IIRC hauptsächlich zum Speichern von Objektnamen beim Erstellen von Skripten verwendet wird. Sein Wert kann nicht seinNULL
Es ist im Grunde das gleiche wie mit nvarchar(128) NOT NULL
BEARBEITEN
Wie von @Jim in den Kommentaren erwähnt, glaube ich nicht, dass es wirklich einen Business Case gibt, in dem Sie sysnameehrlich sein würden. Es wird hauptsächlich von Microsoft beim Erstellen der internen sysTabellen und gespeicherten Prozeduren usw. in SQL Server verwendet.
Wenn Sie beispielsweise ausführen, sehen Exec sp_help 'sys.tables'Sie, dass die Spalte nameso definiert sysnameist, weil der Wert davon tatsächlich ein Objekt an sich ist (eine Tabelle).
Ich würde mir zu viele 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 sysnamegleichbedeutend ist mitvarchar(30)
Dokumentation
sysnamewird mit der Dokumentation für ncharundnvarchar im Abschnitt "Bemerkungen" definiert:
sysname ist ein vom System bereitgestellter benutzerdefinierter Datentyp, der funktional nvarchar (128) entspricht , außer dass er nicht nullwertfähig ist. sysname wird verwendet, um auf Datenbankobjektnamen zu verweisen.
Um die obigen Ausführungen zu verdeutlichen, wird standardmäßig sysname definiert, da NOT NULLes durchaus möglich ist, ihn als nullbar zu definieren. Es ist auch wichtig zu beachten, dass die genaue Definition zwischen Instanzen von SQL Server variieren kann.
Spezielle Datentypen verwenden
Der Datentyp sysname wird für Tabellenspalten, Variablen und Parameter für gespeicherte Prozeduren verwendet, in denen Objektnamen gespeichert werden. Die genaue Definition von
sysname hängt mit den Regeln für Bezeichner zusammen. Daher kann es zwischen Instanzen von SQL Server variieren. sysname ist funktional identisch mit nvarchar (128), außer dass sysname standardmäßig NICHT NULL ist. In früheren Versionen von SQL Server ist sysname als varchar (30) definiert.
Weitere Informationen zum sysnameZulassen oder Nichtzulassen von NULLWerten finden Sie hier https://stackoverflow.com/a/52290792/300863
Nur weil es die Standardeinstellung ist (NICHT NULL zu sein), kann dies nicht garantiert werden!