Fehlerbehebung bei Rollup-Replikationsfehlern
Ändern Sie Daten der Rollup-Datenbank nicht direkt
Ivanti implementiert eine SQL Server-Replikation als eine Möglichkeit der Transaktionsreplikation, vom Herausgeber zum Abonnenten. Wenn Sie "replizierte" Daten beim Abonnenten ändern, werden diese Änderungen nicht beim Herausgeber repliziert. Außerdem hat der Herausgeber keine Kenntnis über diese Änderungen. Wenn Sie diese Änderungen rückgängig machen wollen, müssen Sie dazu den SQL Server Replication Monitor verwenden und den Snapshot des entsprechenden Herausgebers ungültig machen und einen neuen Snapshot erzwingen.
ProductSnapshot-Replikationsfehler nach dem Upgrade von Endpoint Manager Versionen
Wenn diese Fehlermeldung erscheint:
Der Prozess konnte kein Massenkopieren in die Tabelle ''"dbo"."PRODUCTSnapshot"' durchführen
Das Problem besteht darin, dass die Ansicht ReplProductV im aktualisierten Core nicht mit der älteren ProductSnapshot- Tabelle in der Rollup-Datenbank synchron ist.
Um diesen Fehler zu beheben, muss die Ansicht dem Schema entsprechen. Führen Sie sowohl bei der Ansicht als auch bei der Tabelle sp_help aus und stellen Sie sicher, dass die "nullbaren" Spalten übereinstimmen. Höchstwahrscheinlich sind die Spalten Version und ProductGUID nicht synchron. Sie können die Tabelle in Ihrer Rollup-Datenbank ändern (aber Sie müssten die Ansichten in den einzelnen nicht aktualisierten Cores ebenfalls ändern):
alter table productsnapshot alter column version nvarchar9255) not null
alter table productsnapshot alter column productguid nvarchar(255) not null
Oder Sie können die Ansicht im aktualisierten Core ändern. Zum Ändern der Ansicht müssen Sie den Replikationsvorgang für die Ansicht im Dialogfeld der Eigenschaften der lokalen Veröffentlichung stoppen.
Feldgröße zu groß - Replikationsfehler
Wenn Sie diesen Fehler im Replikationsmonitor sehen, ist das Problem, dass die Schemata der Ansicht auf dem Core und der Tabelle im Rollup nicht übereinstimmen. Auch wenn es eine Nichtübereinstimmung bei den Längen der Spalten sein könnte, ist es doch in der Regel eine Nichtübereinstimmung des Spaltenattributs NOT NULL. Alle Spaltendefinitionen zwischen Repl<tablename>V auf dem Core und dem Tabellennamen des Rollups müssen übereinstimmen.
Wenn der Fehler eine Tabelle nennt, die mit Snapshot endet, wird diese Tabelle als temporäre Tabelle auf dem Rollup verwendet. Die entsprechende Ansicht auf dem Core enthält das Wort "Snapshot" nicht (z. B. ProductSnapshot = ReplProductV).
Replikationsfehler bei ISA- und IDE-Tabellen
Problem: Bei Einsatz einer älteren (oder aktualisierten) Version der Ivanti Datenbank können Sie auf einen Replikationsfehler bei den ISA- und IDE-Tabellen stoßen. Die Identitätsspalten in den ISA- und IDE-Tabellen wurden im Jahr 2011 umbenannt.
Lösung: Sobald die Replikation ausgeführt wird, müssen Sie die Abonnements und Artikel sowohl für die ISA- als auch für die IDE-Tabellen löschen. Ändern Sie die Ansichten und verwenden Sie in der SELECT-Klausel die alte Identitätsspaltennamen. Erstellen Sie die EINDEUTIG GRUPPIERTEN Indizes für die Ansichten, und fügen Sie die Artikel und Artikelfilter wieder hinzu. Aktualisieren Sie das Abonnement. Abschließend können Sie manuell im Fenster "Snapshot Agentenstatus" auf Start klicken, oder darauf warten, dass der Snapshot-Agent die Änderungen erkennt. Überprüfen Sie im Replikationsmonitor, ob die Daten erfolgreich repliziert wurden.
Beheben Sie das Problem mithilfe des folgenden Skripts. Achten Sie darauf, dass Sie den Namen Ihres Abonnenten und der Datenbank (<your subscriber server name> und <your subscriber database name>) in der Prozedur sp_dropsubscription verwenden.
--Abonnement und Artikel für die ISA-Tabelle verwerfen
sp_dropsubscription 'LDMS', 'ISACSO', '<your subscriber server name>', '<your subscriber database name>'
go
sp_droparticle @publication = 'LDMS', @article='ISACSO'
go
--Ansicht für die ISA-Tabelle ändern und alte Spalte ISAPorts_Idn in der Auswahlliste verwenden.
alter VIEW [dbo].[ReplISAV] (Computer_Idn, ISA_IDN, DeviceNum, Description, Designation, Location, Manufacturer, Type, COREGUID)
WITH SCHEMABINDING AS
SELECT isnull((b.Computer_Idn + 2097152), b.Computer_Idn) Computer_Idn, isnull(cast(b.ISAPorts_IDN as int), cast(0 as int)) ISAPorts_IDN, isnull(b.DeviceNum, 0) DeviceNum, b.Description, b.Designation, b.Location, b.Manufacturer, b.Type, isnull(cast(a.SYSTEMGUID as uniqueidentifier), cast(cast(0 as binary) as uniqueidentifier)) COREGUID
FROM dbo.METASYSTEMS a, dbo.ISA b
WHERE a.SYSTEM_IDN = 0
GO
--Gruppierten Index neu erstellen
create unique clustered index PKReplISAV on ReplISAV (CoreGuid, Computer_Idn, ISA_Idn)
go
--Artikel und Filter wieder zur Veröffentlichung hinzufügen
sp_addarticle @publication = 'LDMS', @article='ISACSO', @source_object='ReplISAV', @destination_table='ISA', @type='indexed view logbased', @sync_object='ReplISAV', @pre_creation_cmd='delete', @schema_option=0x00, @status=24, @ins_cmd='CALL sp_LDins_ISA', @del_cmd='CALL sp_LDdel_ISA', @upd_cmd='MCALL sp_LDupd_ISA', @fire_triggers_on_snapshot='FALSE'
go
sp_articlefilter @publication = 'LDMS', @article='ISACSO', @filter_name='CoreGuidISA', @filter_clause='CoreGuid = cast(''C192290A-8FAC-4ABF-8183-D6B911ACFE73'' as uniqueidentifier)'
go
--Abonnement und Artikel für die IDE-Tabelle verwerfen
sp_dropsubscription 'LDMS', 'IDECSO', '<your subscriber server name>', '<your subscriber database name>'
go
sp_droparticle @publication = 'LDMS', @article='IDECSO'
go
--Ansicht für die IDE-Tabelle ändern und alte Spalte IDDPorts_Idn in der Auswahlliste verwenden.
ALTER VIEW [dbo].[ReplIDEV] (Computer_Idn, IDE_IDN, DeviceNum, Description, Designation, Location, Manufacturer, Type, ProdName, COREGUID)
WITH SCHEMABINDING AS
SELECT isnull((b.Computer_Idn + 2097152), b.Computer_Idn) Computer_Idn, isnull(cast(b.IDEPorts_Idn as int), cast(0 as int)) IDEPorts_IDN, isnull(b.DeviceNum, 0) DeviceNum, b.Description, b.Designation, b.Location, b.Manufacturer, b.Type, b.ProdName, isnull(cast(a.SYSTEMGUID as uniqueidentifier), cast(cast(0 as binary) as uniqueidentifier)) COREGUID
FROM dbo.METASYSTEMS a, dbo.IDE b
WHERE a.SYSTEM_IDN = 0
GO
--Gruppierten Index neu erstellen
create unique clustered index PKReplIDEV on ReplIDEV (CoreGuid, Computer_Idn, IDE_Idn)
go
--Artikel und Filter wieder zur Veröffentlichung hinzufügen
sp_addarticle @publication = 'LDMS', @article='IDECSO', @source_object='ReplIDEV', @destination_table='IDE', @type='indexed view logbased', @sync_object='ReplIDEV', @pre_creation_cmd='delete', @schema_option=0x00, @status=24, @ins_cmd='CALL sp_LDins_IDE', @del_cmd='CALL sp_LDdel_IDE', @upd_cmd='MCALL sp_LDupd_IDE', @fire_triggers_on_snapshot='FALSE'
go
sp_articlefilter @publication = 'LDMS', @article='IDECSO', @filter_name='CoreGuidIDE', @filter_clause='CoreGuid = cast(''C192290A-8FAC-4ABF-8183-D6B911ACFE73'' as uniqueidentifier)'
go
--Abonnement aktualisieren
sp_refreshsubscriptions @publication='LDMS'
go