sql >> Databáze >  >> RDS >> Sqlserver

SQL Data Compare - Chybí některé tabulky

Data lze porovnávat pouze v případě, že víte, jaké záznamy z tabulek je třeba porovnávat. Porovnávač používá PK, aby věděl, jaké záznamy porovnávat. Pokud vaše tabulka nemá PK (nebo alespoň jedinečný index), bude v seznamu tabulek chybět.

Vyřešíte to tak, že si PK vytvoříte sami (jen pro srovnání)

UPRAVIT

  1. Spolupracovník měl nedávno potíže kvůli tomu, že někdo explicitně vyloučil některé tabulky ze srovnávacího projektu a svěřil je git. Takže to zkontrolujte, jestli to není nový projekt.

  2. Nedávno jsem dostal za úkol porovnat tabulky bez PK a našel jsem HASHBYTES abych byl novým přítelem, v tabulkách také nejsou jedinečné řádky a k vyřešení jsem použil ROW_NUMBER s PARTITION, viz úryvek níže.

    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 

Tímto způsobem mohu vytvořit PK na základě hash vypočítaného s celým obsahem řádku.

Obs:. Poznámka:Porovnávám MyTable_TEMP a ne MyTable . tak to můžu nechat nedotčené.



  1. Efektivně kopírujte/duplikujte/zálohujte databázové tabulky - mysql

  2. Parametr JDBC ověřeníServerCertificate=false se připojuje bez potřeby úložiště klíčů klienta a úložiště důvěryhodnosti

  3. Praktický výběr procesoru pro úlohy SQL Server 2014/2016 OLTP

  4. Provedení systémového příkazu z mysql