Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Hitung Hash atau Checksum untuk tabel di SQL Server

Anda dapat menggunakan CHECKSUM_AGG . Hanya membutuhkan satu argumen, jadi Anda bisa melakukan CHECKSUM_AGG(CHECKSUM(*)) - tetapi ini tidak berfungsi untuk tipe data XML Anda, jadi Anda harus menggunakan SQL dinamis.

Anda dapat membuat daftar kolom secara dinamis dari INFORMATION_SCHEMA.COLUMNS lalu masukkan int ke dalam template:

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. Cara Membuat Prosedur Tersimpan di SQL Server

  2. Cara menentukan apakah bilangan itu float atau integer

  3. Kesalahan nama kolom tidak valid saat memanggil sisipan setelah tabel dibuat

  4. SQL Server:jumlah maksimum baris dalam tabel

  5. Mendapatkan tanggal Mulai dan berakhir dalam seminggu? Di server Sql?