sysname
to wbudowany typ danych ograniczony do 128 znaków Unicode, który, IIRC, jest używany głównie do przechowywania nazw obiektów podczas tworzenia skryptów. Jego wartość nie może być NULL
Zasadniczo jest to to samo, co użycie nvarchar(128) NOT NULL
EDYTUJ
Jak wspomniał @Jim w komentarzach, nie sądzę, aby istniał przypadek biznesowy, w którym użyłbyś sysname
szczerze mówiąc. Jest używany głównie przez Microsoft podczas budowania wewnętrznego sys
tabele i procedury składowane itp. w SQL Server.
Na przykład, wykonując Exec sp_help 'sys.tables'
zobaczysz, że kolumna name
jest zdefiniowany jako sysname
dzieje się tak, ponieważ wartość tego jest w rzeczywistości obiektem samym w sobie (tabela)
Nie martwiłbym się tym zbytnio.
Warto również zauważyć, że dla tych osób, które nadal używają SQL Server 6.5 i niższych (czy są jeszcze osoby, które go używają?) wbudowany typ sysname
jest odpowiednikiem varchar(30)
Dokumentacja
sysname
jest zdefiniowany w dokumentacji nchar
i nvarchar
, w sekcji uwag:
nazwa systemu to dostarczony przez system typ danych zdefiniowany przez użytkownika, który jest funkcjonalnie równoważny nvarchar(128) , z tą różnicą, że nie ma wartości null. nazwa systemu służy do odwoływania się do nazw obiektów bazy danych.
Aby wyjaśnić powyższe uwagi, domyślnie nazwa systemu jest zdefiniowany jako NOT NULL
z pewnością można go zdefiniować jako dopuszczający wartość null. Należy również zauważyć, że dokładna definicja może się różnić w zależności od instancji SQL Server.
Korzystanie ze specjalnych typów danych
nazwa systemu typ danych jest używany dla kolumn tabeli, zmiennych i parametrów procedury składowanej, które przechowują nazwy obiektów. Dokładna definicja sysname dotyczy zasad dotyczących identyfikatorów. Dlatego może się różnić między instancjami SQL Server. nazwa systemu jest funkcjonalnie taki sam jak nvarchar(128) z wyjątkiem tego, że domyślnie sysname NIE JEST NULL. Wcześniejsze wersje SQL Server, sysname jest zdefiniowany jako varchar(30).
Więcej informacji o sysname
zezwalanie lub blokowanie NULL
wartości można znaleźć tutaj https://stackoverflow.com/a/52290792/300863
Tylko dlatego, że jest to ustawienie domyślne (nie jest NULL) nie gwarantuje, że tak będzie!