sql >> データベース >  >> RDS >> Sqlserver

SQL Server のテーブルのハッシュまたはチェックサムを計算する

    CHECKSUM_AGG を使用できます .引数が 1 つしかないので、 CHECKSUM_AGG(CHECKSUM(*)) を実行できます - しかし、これは XML データ型では機能しないため、動的 SQL に頼る必要があります。

    INFORMATION_SCHEMA.COLUMNS から列リストを動的に生成できます 次に int をテンプレートに挿入します:

    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. MySQLクエリログを有効にする方法は?

    2. DBMSチュートリアル:DBMSの完全なクラッシュコース

    3. mysqlで指定された日付の翌月を検索します

    4. 動的入力パラメーターを「即時実行」に渡す