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

Porównanie danych SQL — brak niektórych tabel

Dane można porównywać tylko wtedy, gdy wiesz, jakie rekordy z tabel mają zostać porównane. Comparer używa PK, aby wiedzieć, które rekordy należy porównać. Jeśli Twoja tabela nie ma PK (lub przynajmniej unikalnego indeksu), nie będzie jej na liście tabel.

Możesz to rozwiązać, samodzielnie tworząc PK (tylko dla porównania)

EDYTUJ

  1. Współpracownik miał ostatnio trudności z powodu wyraźnego wykluczenia niektórych tabel z projektu porównawczego i przekazania ich do git. Sprawdź to, jeśli nie jest to nowy projekt.

  2. Niedawno otrzymałem zadanie porównania tabel bez PK i znalazłem HASHBYTES aby być nowym przyjacielem, również nie ma unikalnych wierszy w tabelach i do jego rozwiązania użyłem ROW_NUMBER z PARTITION, patrz poniżej fragment.

    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 

W ten sposób mogę tworzyć PK na podstawie hasha obliczonego z całą zawartością wiersza.

Obs:. Uwaga porównuję MyTable_TEMP a nie MyTable . w ten sposób mogę to pozostawić nietknięte.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przepływ warunkowy programu SQL Server

  2. jak sprawdzić unikalność (nie powielanie) posta w kanale rss

  3. SQL Server Asp.Net - Logowanie nie powiodło się

  4. Jak sprawdzić, czy ograniczenie istnieje na serwerze Sql?

  5. Utwórz serwer połączony między dwoma kontenerami platformy Docker z uruchomionym programem SQL Server (przykład T-SQL)