当我运行此脚本以搜索特定文本时 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在快照期间失败。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top