Que nome no mundo louco de rótulos t-sql – sqlservercentral como renderizar bitcoin para usd

Vamos dar uma olhada em um domínio que você provavelmente conhece pouco: credenciais T-SQL (isto é, nomes de entidades). Na maioria dos casos, as regras de nomear as coisas no SQL Server são bem simples, mas há algumas nuances que você pode querer saber. O básico

Observe que MaxSize em sys.types é expresso em bytes, não em caracteres. Como isso é NVARCHAR em vez de VARCHAR, o máximo de 128 “caracteres” (isto é, pontos de código de 16 bits) é um máximo de 256 bytes. As regras (de acordo com a documentação)

Os resultados dessa consulta indicam que arquivos de montagem, transações, status de observação do servidor e sessões de evento estendidas devem ser revisados.


Felizmente, o “Status de Auditoria do Servidor” e “Sessões de Eventos Avançados” eram ambos falso-positivos. A razão pela qual eles estavam errados é porque eles não contêm os valores de origem. Em ambos os casos, as tabelas que contêm os valores de origem sys.server_audits e sys.server_event_sessions usam sysname ou NVARCHAR (128).

Depois de documentação sys.assembly_files, o nvarchar (260) que corresponde ao comprimento máximo de 520, como acima consulta voltou. Mas a documentação ALTER ASSEMBLY, é assim que você adicionar arquivos para as assembléias, não disse nada, um comprimento máximo ou por que é o padrão de 128. No entanto, não é uma nota nos argumentos, onde ele descreve [File {ADD client_file_specifier [aS filename] … cláusula: client_file_specifier a localização é baixar o arquivo … Se filename não for especificado, o nome de client_file_specifier arquivo é usado como o nome do arquivo.

Isto significa que se você adicionar um arquivo de um lugar para arquivar caminho para entregar um VARBINARY literal (isto é hex bytes), e não oferecem um nome de arquivo como costume, caminho completo para o arquivo é carregado é usado como um “nome” (isso ocorre também ao criar uma montagem a partir de um caminho de arquivo). Então, por que o valor de 260? Isso resulta do comprimento máximo padrão de um caminho de 260 (consulte Nomes de arquivo, Caminhos e Espaços de Nomes: Limite máximo de comprimento de caminho para obter mais detalhes).

Agora só temos que verificar essa informação. Precisamos de um assembly real para adicionar um arquivo porque os tipos de assembly internos do CLR, Microsoft.SqlServer.Types, não permitem a adição de arquivos. Então eu usei o assembly principal do SQL # da minha biblioteca SQL # SQLCLR:

Parece que 259 é o comprimento máximo que pode ser usado. Por quê? Para voltar ao “Arquivos Naming …” documentário (acima), afirma: Por exemplo, o caminho máximo na unidade D “D: \ a seqüência de 256 caracteres”, onde “” o caractere nulo é rescisão invisível para a página de código do sistema atual. (Os caracteres são usados ​​aqui para clareza visual e não podem fazer parte de uma sequência de caminho válida.)

A documentação para relatórios CREATE DATABASE: database name pode conter um máximo de 128 caracteres, a menos que um nome lógico seja especificado para o arquivo de log. Se nenhum nome de arquivo de log lógico for especificado, o SQL Server gerará o nom_fichier_logique e nom_fichier_sous para o jornal adicionando um sufixo database_name. Isso limita o nome do banco de dados a 123 caracteres, portanto, o nome do arquivo lógico gerado não tem mais de 128 caracteres.

Isso não é um erro real ;-). Mas parece que o tamanho máximo de verdade para o nome sem o nome lógico especificado é realmente 124 caracteres, e não 123. Isso faz sentido, como o nome lógico do banco de dados é o nome do banco de dados mais _log ser Isso é 4 caracteres 128 caracteres. Tabelas temporárias locais e procedimentos armazenados

Em um banco de dados com Lanche binário Em um caso em que a maiúsculas e minúsculas não é considerado, o teste acima não é nada “SELECT 1” para trás, mas “SELECT * FROM # …” é bem sucedido, mesmo que a primeira letra é usado ser diferente entre CREATE e SELECT.

Em um banco de dados com Lanche binário o caso em um caso insensível o teste acima não retorna nada “5 SELECT”, mas o “SELECT * FROM … ##” sucede, mesmo com o invólucro da primeira letra ser diferente entre CREATE e SELECT.

Em um banco de dados com Lanche binário Para uma instância sem distinção entre maiúsculas e minúsculas, o teste acima não retorna nada de “SELECT 10”, mas “SELECT * FROM @ …” é bem-sucedido mesmo se a primeira letra for usada ser diferente entre CREATE e SELECT.