Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL analytics endpoint no Microsoft Fabric
Warehouse no Microsoft Fabric
Banco de dados SQL no Microsoft Fabric
Retorna o valor binário da soma de verificação calculado em uma linha de tabela ou em uma lista de expressões.
Convenções de sintaxe de Transact-SQL
Sintaxe
BINARY_CHECKSUM ( * | expression [ , ...n ] )
Observação
Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
Argumentos
*
Especifica que a computação abrange todas as colunas da tabela.
BINARY_CHECKSUM ignora colunas de tipos de dados não comparáveis em seu cálculo. Tipos de dados não comparáveis incluem:
- cursor
- imagem
- ntext
- text
- xml
- tipos definidos pelo usuário em tempo comum de execução de linguagem comum (CLR) não comparáveis
expressão
Uma expression de qualquer tipo.
BINARY_CHECKSUM ignora expressões de tipos de dados não comparáveis em seu cálculo.
Tipos de retorno
int
Comentários
BINARY_CHECKSUM(*), calculado em qualquer linha de uma tabela, retorna o mesmo valor contanto 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, ela retorna o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e forem iguais quando comparados usando o operador de igual (=).
Para essa definição, dizemos que valores nulos, de um tipo especificado, são comparados como valores iguais. Se, pelo menos, um dos valores na lista de expressões for alterado, a soma de verificação da expressão também poderá ser alterada. No entanto, essa mudança não é garantida, então, para detectar se os valores mudaram, você deve usar BINARY_CHECKSUM apenas se sua aplicação tolerar uma alteração ocasional que tenha sido ignorada. Caso contrário, considere a possibilidade de usar o HASHBYTES. Com um algoritmo de hash MD5 especificado, a probabilidade de que HASHBYTES retorne o mesmo resultado, para duas entradas diferentes, é muito menor que BINARY_CHECKSUM.
BINARY_CHECKSUM pode operar sobre uma lista de expressões e retorna o mesmo valor para uma lista especificada.
BINARY_CHECKSUM aplicado sobre duas listas de expressões retorna o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e representação de byte. Nessa definição, os valores nulos de um tipo especificado são considerados como possuidores da mesma representação de byte.
BINARY_CHECKSUM e CHECKSUM são funções semelhantes. Elas podem ser usadas para calcular um valor de soma em uma lista de expressões e a ordem das expressões afeta o valor resultante. A ordem das colunas usada para BINARY_CHECKSUM(*) é a mesma especificada na definição de tabela ou exibição. Essa ordem inclui as colunas computadas.
BINARY_CHECKSUM e CHECKSUM retornam valores diferentes para os tipos de dados de cadeia de caracteres, em que a localidade pode fazer com que as cadeias de caracteres com uma representação diferente sejam comparadas 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 dado de string)
Por exemplo, as cadeias McCavity e Mccavity têm valores diferentes BINARY_CHECKSUM . Por outro lado, para um servidor que não diferencia maiúsculas de minúsculas, CHECKSUM retorna os mesmos valores de soma de verificação para essas cadeias de caracteres. Você deve evitar a comparação dos valores de CHECKSUM com os valores de BINARY_CHECKSUM.
BINARY_CHECKSUMsuporta qualquer comprimento de tipo varbinary(max) e até 255 caracteres do tipo nvarchar(n) / nvarchar(max).
Exemplos
Este exemplo usa BINARY_CHECKSUM para detectar as alterações em uma linha da 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