2010-05-26 27 views
7

Wenn ich dieses Skript ausführen, um bestimmten Text in sys.columns zu suchen, und ich bekomme eine Menge "dbo.syncobj_0x3934443438443332" wie Zeilen.Was ist syncobj in SQL Server

SELECT c.name, s.name + '.' + o.name 
FROM sys.columns c 
INNER JOIN sys.objects o ON c.object_id=o.object_id 
INNER JOIN sys.schemas s ON o.schema_id=s.schema_id 
WHERE c.name LIKE '%text%' 

Wenn ich es richtig mache, sind sie Replikationsobjekte. Ist es so? Kann ich sie einfach von meiner Anfrage wegwerfen wie o.name NOT LIKE '%syncobj%' oder gibt es einen anderen Weg?

Vielen Dank.

Antwort

11

Ich habe eine Lösung gefunden. Weiß nicht, ob es das Beste ist oder nicht.

SELECT c.name, s.name + '.' + o.name 
FROM sys.columns c 
    INNER JOIN sys.objects o ON c.object_id=o.object_id 
    INNER JOIN sys.schemas s ON o.schema_id=s.schema_id 
WHERE c.name LIKE '%text%' AND o.type = 'U' 

Das Ergebnis ist jetzt in Ordnung. Wie ich schon sagte Syncobjs sind Replikationsobjekte und sie haben keine Bedeutung für uns. Sie werden nur für Replikationszwecke verwendet.

http://www.developmentnow.com/g/114_2007_12_0_0_443938/syncobj-views.htm

EDIT:

hinzufügen Passwort zu, syncobj die als Ansichten in DB gespeichert werden, so dass, wenn Sie die Liste der Ansichten benötigen, werden Sie wahrscheinlich brauchen, um sie zu ignorieren, wie ich in habe meine Frage.

Beim Überprüfen des Unterschieds zwischen Syncobj und meinen Ansichten ist der einzige Unterschied is_ms_shipped Spalte. Für syncobj ist es 1, für andere 0. Es bedeutet, dass syncobj-Ansichten vom System erstellt werden.

P.S. Ich warte einige Zeit und wenn niemand eine andere Antwort gibt, nehme ich meine an.

+4

+1 für die Antwort. Geh und nimm es an. –

1

Wenn Sie eine Replikation erstellen, die nicht alle Felder oder andere Metadatenänderungen aus der ursprünglichen Tabelle enthält. Wenn Sie ein Generierungsskript aus einer Publikation erstellen, zeigt es Ihnen, wie es erstellt wird (siehe unten). Die Ansicht stellt ein Objekt bereit, um die bcp-Extrakte während der anfänglichen Momentaufnahmen zu erzeugen. Hier

ist ein Beispiel

- Hinzufügen des Artikels Synchronisationsobjekt exec sp_articleview @publication = N'publication_data '@article = N'tablename', @view_name = N'syncobj_0x4239373642443436' , @filter_clause = N '', @force_invalidate_snapshot = 1, = 1 @force_reinit_subscription GO

PS Ich hatte kürzlich ein Problem, als ich die Replikation abbrach, sie nicht fallen ließ und dann die Systemansichten manuell löschen musste, um ein Replikationsskript wiederzuverwenden. Geben eine Fehlermeldung

Msg 2714, Ebene 16, Status 3: Es gibt bereits ein Objekt 'syncobj_0x3437324238353830' in der Datenbank mit dem Namen.

Die Ursache dafür, dass der BCP während des Snapshots fehlgeschlagen ist.