sysname- это встроенный тип данных, ограниченный 128 символами Unicode, который, IIRC, используется в основном для хранения имен объектов при создании скриптов. Его ценность не может бытьNULL
Это в основном то же самое, что и использование nvarchar(128) NOT NULL
РЕДАКТИРОВАТЬ
Как отметил @Jim в комментариях, я не думаю, что есть действительно бизнес-кейс, который вы бы использовали, sysnameесли честно. Он в основном используется Microsoft при создании внутреннегоsys таблиц, хранимых процедур и т. Д. В SQL Server.
Например, выполнив, Exec sp_help 'sys.tables'вы увидите, что столбец nameопределен так, sysnameпотому что значение this на самом деле является объектом (таблицей).
Я бы слишком беспокоился об этом.
Также стоит отметить, что для тех людей, которые все еще используют SQL Server 6.5 и ниже (есть ли еще люди, использующие его?), Встроенный тип sysnameявляется эквивалентомvarchar(30)
Документация
sysnameопределяется в документации для ncharиnvarchar в разделе примечаний:
sysname - это определяемый системой тип данных, определяемый пользователем, который функционально эквивалентен nvarchar (128) , за исключением того, что он не допускает значения NULL. sysname используется для ссылки на имена объектов базы данных.
Чтобы прояснить приведенные выше замечания, по умолчанию sysname определено, так как NOT NULLего можно определить как допускающее значение NULL. Также важно отметить, что точное определение может варьироваться в зависимости от экземпляра SQL Server.
Использование специальных типов данных
Тип данных sysname используется для столбцов таблицы, переменных и параметров хранимых процедур, в которых хранятся имена объектов. Точное определение
sysname связано с правилами для идентификаторов. Следовательно, он может варьироваться в зависимости от экземпляра SQL Server. sysname функционально такое же, как nvarchar (128), за исключением того, что по умолчанию sysname НЕ ПУСТО. В более ранних версиях SQL Server sysname определяется как varchar (30).
Дополнительную информацию о sysnameразрешении или запрещении NULLзначений можно найти здесь https://stackoverflow.com/a/52290792/300863
Тот факт, что это значение по умолчанию (НЕ NULL) не гарантирует, что это будет так!