SQL Server中的syncobj是什么
-
04-10-2019 - |
题
当我运行此脚本以搜索特定文本时 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%'
还是有另一种方式?
谢谢你。
解决方案
我找到了解决方案。不知道,这是否是最好的。
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_0_4443938/syncobj-views.htm
编辑:
忘了添加,Syncobj是在DB中存储的视图,因此,如果您需要视图列表,则可能需要像我在问题中那样忽略它们。
在检查Syncobj和我的观点之间的差异时,唯一的区别是 is_ms_shipped 柱子。对于Syncobj是1,对于其他0。这意味着SyncOBJ视图是由系统创建的。
PS我会等待一段时间,如果没有人给出另一个答案,我会接受我的。
其他提示
当您创建不包括所有字段或其他元数据从原始表更改中的复制时。如果您从出版物中执行生成脚本,它将向您展示其如何创建(见下文)。该视图提供了一个在初始快照期间生成BCP提取物的对象。
这是一个例子
- 添加文章同步对象exec exec sp_articleView @publication = n'publication_data',@article = n'tablename',@view_name = n'syncobj_0x423939342424444444436'
PS I最近在我删除复制时遇到了问题,它未能删除这些问题,然后您必须手动删除系统视图以重复使用复制脚本。给出错误消息
MSG 2714,级别16,状态3:数据库中已经有一个名为“ Syncobj_0x34373242383830”的对象。
这导致BCP在快照期间失败。