当我运行此脚本来搜索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_443938/syncobj-views.htm

编辑:

忘了添加,syncobj是以 View 的形式存储在数据库中的,因此,如果您需要 View 列表,则可能需要像我在问题中那样忽略它们。

在检查syncobj和我的 View 之间的差异时,唯一的区别是 is_ms_shipped 列。对于syncobj,它是1,对于其他人,它是0。这意味着syncobj View 是由系统创建的。

P.S.我会等待一段时间,如果没有人给出其他答案,我会接受我的。

关于sql - 什么是SQL Server中的syncobj,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2910077/

10-12 21:57