Данните могат да се сравняват само ако знаете какви записи от таблици трябва да се сравняват. Comparer използва PK, за да знае какви записи да сравни. Ако таблицата ви няма PK (или поне уникален индекс), тя може да липсва в списъка с таблици.
Можете да го разрешите, като създадете сами PK (само за сравнение)
РЕДАКТИРАНЕ
-
Един колега наскоро се затрудни, тъй като някой изрично изключи някои таблици от проекта за сравнение и го ангажира с git. Така че проверете дали не е нов проект.
-
Наскоро ми беше възложено да сравнявам таблици без 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
. по този начин мога да го оставя непокътнат.