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
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
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