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