当我运行此脚本来搜索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/