Gegevens kunnen alleen worden vergeleken als u weet welke records uit tabellen moeten worden vergeleken. Comparer gebruikt PK om te weten welke records moeten worden vergeleken. Als uw tabel geen PK (of op zijn minst een unieke index) heeft, zal deze ontbreken in de lijst met tabellen.
Je kunt het oplossen door zelf een PK te maken (alleen ter vergelijking)
BEWERKEN
-
Een collega kreeg het onlangs moeilijk omdat iemand expliciet enkele tabellen uit het vergelijkingsproject heeft uitgesloten en deze aan git heeft toegewezen. Dus controleer het als het geen nieuw project is.
-
Ik kreeg onlangs de taak om tabellen te vergelijken zonder PK en vond HASHBYTES om een nieuwe vriend te zijn, zijn er ook geen unieke rijen in de tabellen en om het op te lossen heb ik ROW_NUMBER met PARTITION, zie onderstaand 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
Op die manier kan ik PK maken op basis van een hash die is berekend met de volledige rij-inhoud.
Obs:. Opmerking Ik vergelijk MyTable_TEMP
en niet MyTable
. op die manier kan ik het ongemoeid laten.