Es mostren els missatges amb l'etiqueta de comentaris Sincronització web de bases de dades. Mostrar tots els missatges
Es mostren els missatges amb l'etiqueta de comentaris Sincronització web de bases de dades. Mostrar tots els missatges

dimecres, 12 de juny del 2013

Desactivar el control automàtic de les columnes Identity en una replicació de barreja al SQL Server 2008 R2

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

dilluns, 10 de juny del 2013

Error de sincronització web a la replicació de bases de dades SQLServer

L’escenari és el següent, tinc en un servidor SQLServer 2008 R2 una base de dades publicada y configurada per la sincronització via web (per internet). El publicador y la sincronització web funcionen perfectament. Per altre banda tinc un altre servidor configurat com subscriptor amb SQLServer 2008 R2 express també funcionant perfectament. Com que el subscriptor te la versió express del SQLServer, aquest no disposa del SQLServerAgent. Per tant la sincronització s’inicia mitjançant un programari fet amb C# que utilitza RMO. Aquest programari ha esta funcionant durant un llarg període de temps i tan els canvis realitzats a la base de dades del publicador com els canvis fets al subscriptor s’han sincronitzat correctament. De sobte, però, la sincronització ha deixat de funcionar mostrant el següent error:

No se encontró la dirección URL de configuración automática del proxy.

El Agente de mezcla no se pudo conectar a la dirección URL durante la sincronización web. Compruebe que la configuración de dirección URL, credenciales de inicio de sesión en Internet y servidor proxy es correcta y que se puede tener acceso al servidor web.

Error: The subscription could not be synchronized. Verify that the subscription has been defined correctly.

Per tal d’arreglar aquest error, cal anar al menú del “internet explorer” –> “Herramientas” –> “Opciones de internet” –> pestanya de “Conexiones” –> Botó de “configuración LAN” i desmarcar tots els paràmetres. Concretament en aquest cas estava marcat el paràmetre de “Detectar la configuración automaticamente”, segurament marcat per error en alguna de les tasques de manteniment realitzades en el servidor:

image