当我运行此脚本以搜索特定文本时sys.columns,会出现很多"dbo.syncobj_0x3934443438443332"类似的行。
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%'其他方式一样将它们从查询中删除吗?
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是以视图的形式存储在数据库中的,因此,如果您需要视图列表,则可能需要像我在问题中那样忽略它们。
在检查syncobj和我的视图之间的差异时,唯一的区别是 is_ms_shipped 列。对于syncobj,它是1,对于其他,它是0。这意味着syncobj视图是由系统创建的。
附言:我将等待一段时间,如果没有人提供其他答案,我会接受我的。