En el cassos en que es vulgui desactivar el control automàtic de les columnes Identity en una replicació cal aplicar aquesta funció:
sp_changemergearticle @publication, @article, "identityrangemanagementoption", "none"
Per executar-la cal fer-ho a la base de dades publicada (per exemple a la base de dades “EXBD”, i a la taula “Tags” on la clau principal és una columna Identity):
sp_changemergearticle ‘EXBD’, 'tags', ‘identityrangemanagementoption’, ‘none’
Això desactiva tot el control del comptador Identity de la publicació, per tant, cal tindre en compte que les dades només seran entrades al publicador o a un subscriptor, ja que en cas contrari hi haurà conflictes amb aquest comptador. Si es volen entrar dades tan al publicador com al subscriptor cal utilitzar les instruccions SET IDENTITY_INSERT “nom_taula” ON i SET IDENTITY_INSERT “nom_taula” OFF per controlar i assignar manualment el comptador. Us poso un exemple per la taula “Tags” on el TagId és la columna Identity:
BEGIN TRANSACTION
SET IDENTITY_INSERT Tags ON
INSERT INTO Tags (TagId,Tag) VALUES (1000,'Tag Nou')
SET IDENTITY_INSERT Tags OFF
COMMIT TRANSACTION
També es poden utilitzar aquestes instruccions amb els objectes ADO per VB6. En el cas de l’exemple anterior i suposant que BDAux és la connexió a la base de dades:
BDAux.BeginTrans
BDAux.Execute "SET IDENTITY_INSERT Tags ON"
sql = "SELECT * FROM Tags
sql = sql & " WHERE TagId=1000"
Set Tb = New ADODB.Recordset
Tb.Open sql, BDAux, adOpenKeyset, adLockOptimistic
If Tb.EOF Then
Tb.AddNew
Tb!TagId = 1000
End If
Tb!Tag = “Tag Nou”
Tb.Update
Tb.close
Set Tb = Nothing
BDAux.Execute "SET IDENTITY_INSERT Tags OFF"
BDAux.CommitTrans
Cap comentari:
Publica un comentari a l'entrada