Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Oblicz skrót lub sumę kontrolną dla tabeli w SQL Server

Możesz użyć CHECKSUM_AGG . Zajmuje tylko jeden argument, więc możesz wykonać CHECKSUM_AGG(CHECKSUM(*)) - ale to nie działa dla twojego typu danych XML, więc będziesz musiał uciec się do dynamicznego SQL.

Możesz dynamicznie wygenerować listę kolumn z INFORMATION_SCHEMA.COLUMNS a następnie wstaw int do szablonu:

DECLARE @schema_name NVARCHAR(MAX) = 'mySchemaName';
DECLARE @table_name NVARCHAR(MAX) = 'myTableName';
DECLARE @column_list NVARCHAR(MAX);

SELECT @column_list = COALESCE(@column_list + ', ', '')
        + /* Put your casting here from XML, text, etc columns */ QUOTENAME(COLUMN_NAME)
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   TABLE_NAME = @table_name
    AND TABLE_SCHEMA = @schema_name

DECLARE @template AS varchar(MAX)
SET @template = 'SELECT CHECKSUM_AGG(CHECKSUM({@column_list})) FROM {@schema_name}.{@table_name}'

DECLARE @sql AS varchar(MAX)
SET @sql = REPLACE(REPLACE(REPLACE(@template,
    '{@column_list}', @column_list),
    '{@schema_name}', @schema_name),
    '{@table_name}', @table_name)

EXEC ( @sql )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Eksploracja SQL Server 2014 WYBIERZ PARALELIZM

  2. Jak usunąć wiodące białe znaki w SQL Server — LTRIM()

  3. Wstaw wiele wierszy wartości domyślnych do tabeli

  4. Kreator generowania skryptów SQL Server 2008 daje mi skrypt, w wyniku którego pojawiają się niezamknięte cudzysłowy

  5. SqlException (0x80131904):nieprawidłowa nazwa obiektu „dbo.Categories”