SELECT DISTINCT
OBJECT_SCHEMA_NAME (sc.object_id) as "schema", OBJECT_NAME(sc.object_id) as "name", sc.*
-- FROM syscomments sc
FROM sys.sql_modules sc
WHERE "Definition" LIKE '%raiserror%'
and
OBJECTPROPERTY(object_id, 'IsMSShipped') = 0
and
OBJECT_NAME(sc.object_id) like '%diagram%'
为什么此查询会返回这些SP?他们不是来自微软吗?
sp_helpdiagramdefinition
sp_creatediagram
sp_renamediagram
sp_alterdiagram
sp_dropdiagram
答案 0 :(得分:1)
IsMSShipped 设置为1。 Diagram对象是可选的,仅在初始安装后添加到数据库中。
换句话说,虽然他们 来自MS,但他们不是来自MS的发货(至少不是因为MS正在定义“发货”)。
是的,我知道,这是愚蠢的,每个人都被这至少一次绊倒了。他们本应该称之为IsMSInstalled
。只是去表明选择好名字的重要性。
处理此问题的SOP方法是在模式上也过滤器(“sys”始终是schema_id 4)。