Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Сравнение на SQL данни - Липсват някои таблици

Данните могат да се сравняват само ако знаете какви записи от таблици трябва да се сравняват. Comparer използва PK, за да знае какви записи да сравни. Ако таблицата ви няма PK (или поне уникален индекс), тя може да липсва в списъка с таблици.

Можете да го разрешите, като създадете сами PK (само за сравнение)

РЕДАКТИРАНЕ

  1. Един колега наскоро се затрудни, тъй като някой изрично изключи някои таблици от проекта за сравнение и го ангажира с git. Така че проверете дали не е нов проект.

  2. Наскоро ми беше възложено да сравнявам таблици без PK и открих ХЕШБАЙТОВЕ да бъда нов приятел, също така няма уникални редове в таблиците и за да го реша, използвах РЕД_НОМЕР с PARTITION, вижте фрагмента по-долу.

    SELECT Row_number() 
             OVER ( 
               partition BY [hashid] 
               ORDER BY [hashid]) AS RowNumber, 
           * 
    INTO   [dbo].[mytable_temp] 
    FROM   (SELECT Hashbytes('SHA2_512', (SELECT x.* 
                                          FOR xml raw)) AS [HASHID], 
                   * 
            FROM   [dbo].[mytable] AS x) AS y 

    go 

    ALTER TABLE [dbo].[mytable_temp] 
      ALTER COLUMN [hashid] VARBINARY(900) NOT NULL 

    ALTER TABLE [dbo].[mytable_temp] 
      ALTER COLUMN [rownumber] BIGINT NOT NULL 

    go 

    ALTER TABLE [dbo].[mytable_temp] 
      ADD CONSTRAINT pk_id PRIMARY KEY ([hashid], [rownumber]) 

    go 

По този начин мога да създам PK въз основа на хеш, изчислен с цялото съдържание на ред.

Наблюдение:. Забележете, че сравнявам MyTable_TEMP а не MyTable . по този начин мога да го оставя непокътнат.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как работи ANSI_NULLS в TSQL?

  2. Как да премахнете или изтриете всички тригери от база данни в SQL Server

  3. Предпочитан метод за съхранение на пароли в базата данни

  4. Изберете стойности от полето XML в SQL Server 2008

  5. Как да промените типа данни на колона в SQL Server (T-SQL)