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

Perbandingan Data SQL - Beberapa tabel hilang

Data dapat dibandingkan hanya jika Anda tahu catatan apa dari tabel yang harus dibandingkan. Pembanding menggunakan PK untuk mengetahui catatan apa yang akan dibandingkan. Jika tabel Anda tidak memiliki PK (atau setidaknya indeks unik), tabel tersebut akan hilang dari daftar tabel.

Anda dapat menyelesaikannya dengan membuat PK sendiri (hanya untuk perbandingan)

EDIT

  1. Seorang rekan kerja mengalami kesulitan baru-baru ini karena seseorang secara eksplisit mengecualikan beberapa tabel dari proyek perbandingan dan memasukkannya ke git. Jadi periksa apakah itu bukan proyek baru.

  2. Saya baru-baru ini ditugaskan untuk membandingkan tabel tanpa PK dan menemukan HASHBYTES untuk menjadi teman baru, juga tidak ada baris unik di tabel dan untuk menyelesaikannya saya menggunakan ROW_NUMBER dengan PARTITION, lihat cuplikan di bawah.

    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 

Dengan begitu saya dapat membuat PK berdasarkan hash yang dihitung dengan seluruh konten baris.

Obs:. Catatan saya membandingkan MyTable_TEMP dan bukan MyTable . dengan begitu saya bisa membiarkannya tidak tersentuh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencadangan Otomatis SQL Server

  2. Terjemahan Bahasa untuk Tabel

  3. Masukkan data varbinary ke dalam database SQL Server

  4. Kaskade pada Hapus atau gunakan Pemicu?

  5. SQL Query:Perlu urutan berdasarkan hitungan, sebagian besar harus di atas, sisanya mengikuti