Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O que é o tipo de dados SYSNAME no SQL Server?


sysname é um tipo de dados integrado limitado a 128 caracteres Unicode que, IIRC, é usado principalmente para armazenar nomes de objetos ao criar scripts. Seu valor não pode ser NULL

É basicamente o mesmo que usar nvarchar(128) NOT NULL

EDITAR

Conforme mencionado por @Jim nos comentários, não acho que haja realmente um caso de negócios em que você usaria sysname para ser honesto. É usado principalmente pela Microsoft ao construir o sys interno tabelas e procedimentos armazenados etc dentro do SQL Server.

Por exemplo, executando Exec sp_help 'sys.tables' você verá que a coluna name é definido como sysname isso ocorre porque o valor disso é na verdade um objeto em si (uma tabela)

Eu não me preocuparia muito com isso.

Também vale a pena notar que para aquelas pessoas que ainda usam o SQL Server 6.5 e inferior (ainda há pessoas usando?) o tipo embutido de sysname é o equivalente a varchar(30)

Documentação

sysname é definido com a documentação para nchar e nvarchar , na seção de comentários:

nome do sistema é um tipo de dados definido pelo usuário fornecido pelo sistema que é funcionalmente equivalente a nvarchar(128) , exceto que não é anulável. nome do sistema é usado para fazer referência a nomes de objetos de banco de dados.

Para esclarecer as observações acima, por padrão nome do sistema é definido como NOT NULL é certamente possível defini-lo como anulável. Também é importante observar que a definição exata pode variar entre as instâncias do SQL Server.

Usando tipos de dados especiais

O nome do sistema tipo de dados é usado para colunas de tabela, variáveis ​​e parâmetros storedprocedure que armazenam nomes de objetos. A definição exata de sysname está relacionado às regras para identificadores. Portanto, ele pode variar entre instâncias do SQL Server. nome do sistema é funcionalmente igual a nvarchar(128) exceto que, por padrão, sysname não é nulo. Versões anteriores do SQL Server, sysname é definido como varchar(30).

Algumas informações adicionais sobre sysname permitindo ou não NULL os valores podem ser encontrados aqui https://stackoverflow.com/a/52290792/300863

Só porque é o padrão (ser NOT NULL) não garante que será!