8

このスクリプトを実行して特定のテキストを検索すると、同じような行sys.columnsがたくさん表示されます。"dbo.syncobj_0x3934443438443332"

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%'

正しければ、それらはレプリケーションオブジェクトです。そうですか?のようにクエリからそれらを破棄することはできますo.name NOT LIKE '%syncobj%'か、それとも別の方法がありますか?

ありがとうございました。

4

2 に答える 2

13

私は解決策を見つけました。それが最高のものかどうかはわかりません。

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'

結果は今は問題ありません。私が言ったように、syncobjはレプリケーションオブジェクトであり、私たちにとって意味がありません。これらはレプリケーションの目的でのみ使用されます。

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

編集:

追加するのを忘れて、syncobjはビューとしてDBに保存されるので、ビューのリストが必要な場合は、私の質問で行ったように、おそらくそれらを無視する必要があります。

syncobjと私のビューの違いを確認している間、唯一の違いはis_ms_shipped列です。syncobjの場合は1、その他の場合は0です。これは、syncobjビューがシステムによって作成されることを意味します。

PS私はしばらく待ちます、そして誰も別の答えを与えないならば、私は私のものを受け入れます。

于 2010-05-26T12:31:02.310 に答える
2

元のテーブルからのすべてのフィールドまたはその他のメタデータの変更を含まないレプリケーションを作成する場合。パブリケーションから生成スクリプトを実行すると、その作成方法が表示されます(以下を参照)。ビューは、初期スナップショット中にbcp抽出を生成するためのオブジェクトを提供します。

これが例です

-記事同期オブジェクトの追加execsp_articleview@publication = N'publication_data'、@article = N'tablename'、@ view_name = N'syncobj_0x4239373642443436'、@filter_clause = N''、@ force_invalidate_snapshot = 1、@ force_reinit_subscription = 1 GO

PS最近、レプリケーションをドロップしたときに問題が発生しました。これらをドロップできなかったため、レプリケーションスクリプトを再利用するには、システムビューを手動でドロップする必要があります。エラーメッセージを表示する

メッセージ2714、レベル16、状態3:データベースには「syncobj_0x3437324238353830」という名前のオブジェクトがすでに存在します。

これにより、スナップショット中にbcpが失敗しました。

于 2014-04-04T13:52:27.470 に答える