Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво представлява типът данни SYSNAME в SQL Server?

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) не гарантира, че ще бъде!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pyodbc.connect() работи, но не и sqlalchemy.create_engine().connect()

  2. Настройка на SQL Server Reporting Services

  3. Анализиране на I/O производителността за SQL Server

  4. Обединете няколко реда в един ред

  5. Как да премахнете всички ограничения по подразбиране в базата данни на SQL Server - SQL Server / TSQL урок, част 94