Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Endpoint de análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de dados SQL no Microsoft Fabric
Devolve o valor da soma de verificação binária calculado numa linha de uma tabela ou numa lista de expressões.
Transact-SQL convenções de sintaxe
Sintaxe
BINARY_CHECKSUM ( * | expression [ , ...n ] )
Observação
Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
Arguments
*
Especifica que o cálculo cobre todas as colunas da tabela.
BINARY_CHECKSUM ignora colunas de tipos de dados não comparáveis no seu cálculo. Tipos de dados não comparáveis incluem:
- Cursor
- image
- ntext
- texto
- xml
- tipos definidos pelo utilizador em tempo comum de execução da linguagem comum (CLR) não comparáveis
expressão
Uma expressão de qualquer tipo.
BINARY_CHECKSUM ignora expressões de tipos de dados não comparáveis no seu cálculo.
Tipos de devolução
int
Observações
BINARY_CHECKSUM(*), calculado em qualquer linha de uma tabela, devolve o mesmo valor desde que a linha não seja modificada posteriormente.
BINARY_CHECKSUM Satisfaz as propriedades de uma função hash: quando aplicada sobre quaisquer duas listas de expressões, devolve o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e forem iguais quando comparados usando o operador iguais (=).
Para esta definição, dizemos que valores nulos, de um tipo especificado, comparam-se como valores iguais. Se pelo menos um dos valores na lista de expressões mudar, a soma de verificação das expressões também pode mudar. No entanto, esta alteração não é garantida, por isso, para detetar se os valores mudaram, deve usar BINARY_CHECKSUM apenas se a sua aplicação conseguir tolerar uma alteração ocasional em falta. Caso contrário, considere usar HASHBYTES em vez disso. Com um algoritmo de hash MD5 especificado, a probabilidade de devolver HASHBYTES o mesmo resultado, para duas entradas diferentes, é muito menor do que BINARY_CHECKSUM.
BINARY_CHECKSUM pode operar sobre uma lista de expressões, e devolve o mesmo valor para uma lista especificada.
BINARY_CHECKSUM aplicado sobre quaisquer duas listas de expressões devolve o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e representação em bytes. Para esta definição, os valores nulos de um tipo especificado são considerados como tendo a mesma representação em bytes.
BINARY_CHECKSUM e CHECKSUM são funções semelhantes. Podem ser usadas para calcular um valor de soma de verificação numa lista de expressões, e a ordem das expressões afeta o valor resultante. A ordem das colunas usada para BINARY_CHECKSUM(*) é a ordem das colunas especificada na definição da tabela ou da vista. Esta ordenação inclui colunas calculadas.
BINARY_CHECKSUM e CHECKSUM devolver valores diferentes para os tipos de dados das cadeias, onde a localização pode fazer com que cadeias com representações diferentes se comparem como iguais. Os tipos de dados em cadeia são:
- char
- Nchar
- nvarchar
- Varchar
- sql_variant (se o tipo base de sql_variant for um tipo de dados de cadeia)
Por exemplo, as cadeias McCavity e Mccavity têm valores diferentes BINARY_CHECKSUM . Em contraste, para um servidor insensível a maiúsculas e minúsculas, CHECKSUM devolve os mesmos valores de soma de verificação para essas cadeias. Deves evitar comparar valores CHECKSUM com BINARY_CHECKSUM valores.
BINARY_CHECKSUMsuporta qualquer comprimento de tipo varbinary(max) e até 255 caracteres do tipo nvarchar(n) / nvarchar(max).
Examples
Este exemplo serve BINARY_CHECKSUM para detetar alterações numa linha de tabela.
USE AdventureWorks2022;
GO
CREATE TABLE myTable (column1 INT, column2 VARCHAR (256));
GO
INSERT INTO myTable VALUES (1, 'test');
GO
SELECT BINARY_CHECKSUM(*) FROM myTable;
GO
UPDATE myTable SET column2 = 'TEST';
GO
SELECT BINARY_CHECKSUM(*) FROM myTable;
GO