2013-05-29 5 views
1

J'ai une table Customer qui contient 55 millions d'enregistrements. Je dois mettre à jour une colonne HHPK avec incrément valeursMise à jour d'une table dans SQL Server 2008 R2

Exemple:

12345....upto 55 million 

J'utilise le script suivant, mais le script est erroring avec journal des transactions pour la base de données est plein .. obtenir

DB utilise le modèle de récupération simple

DECLARE @SEQ BIGINT 
SET @SEQ = 0 
UPDATE Customers 
SET @SEQ = HHPK = @SEQ + 1 

est-il une autre façon de faire cette tâche? S'il vous plaît aider

+0

Le tableau a déjà une colonne d'identité CustomerPK. Comment puis-je mettre à jour HHPK pour être identique à CustomerPK? – user2041076

Répondre

0

Comme votre table a déjà une colonne d'identité CustomerPK, il suffit d'utiliser:

UPDATE dbo.Customers 
SET HHPK = CustomerPK 

Bien sûr - avec 55 millions de lignes, ce sera une souche sur votre fichier journal. Donc, vous pouvez le faire par lots - de préférence de moins de 5000 lignes pour éviter escalade de verrouillage effets qui bloquerait exclusivement la table entière:

UPDATE TOP (4500) dbo.Customers 
SET HHPK = CustomerPK 
WHERE HHPK IS NULL 

et répéter jusqu'à ce que toute la table a été mise à jour.

Mais vraiment: si vous avez déjà avez une colonne INT IDENTITYCustomerPK - Pourquoi avez-vous une deuxième colonne pour maintenir les mêmes valeurs? Ça n'a pas beaucoup de sens pour moi ...

Questions connexes