sysname
é um tipo de dados interno limitado a 128 caracteres Unicode que, IIRC, é usado principalmente para armazenar nomes de objetos ao criar scripts. Seu valor não pode serNULL
É basicamente o mesmo que usar nvarchar(128) NOT NULL
EDITAR
Como mencionado por @Jim nos comentários, não acho que exista realmente um caso de negócios em que você usaria sysname
para ser honesto. É usado principalmente pela Microsoft ao criar sys
tabelas internas e procedimentos armazenados, etc, no SQL Server.
Por exemplo, ao executar, Exec sp_help 'sys.tables'
você verá que a coluna name
está definida, sysname
pois o valor disso é na verdade um objeto em si (uma tabela)
Eu me preocuparia muito com isso.
Também é importante notar que, para as pessoas que ainda usam o SQL Server 6.5 e inferior (ainda existem pessoas que o usam?), O tipo incorporado sysname
é equivalente avarchar(30)
Documentação
sysname
é definido com a documentação para nchar
envarchar
, na seção de comentários:
sysname é um tipo de dados definido pelo usuário fornecido pelo sistema que é funcionalmente equivalente a nvarchar (128) , exceto que não é anulável. sysname é usado para referenciar nomes de objetos de banco de dados.
Para esclarecer as observações acima, por padrão sysname é definido, NOT NULL
pois certamente é possível defini-lo como nulo. Também é importante observar que a definição exata pode variar entre instâncias do SQL Server.
Usando tipos de dados especiais
O tipo de dados sysname é usado para colunas da tabela, variáveis e parâmetros de procedimento armazenado que armazenam nomes de objetos. A definição exata de
sysname está relacionada às regras para identificadores. Portanto, pode variar entre instâncias do SQL Server. O sysname é funcionalmente o mesmo que nvarchar (128), exceto que, por padrão, sysname NÃO é NULL. Nas versões anteriores do SQL Server, sysname é definido como varchar (30).
Algumas informações adicionais sobre como sysname
permitir ou não NULL
valores podem ser encontradas aqui https://stackoverflow.com/a/52290792/300863
Só porque é o padrão (não ser NULL) não garante que será!