【发布时间】:2011-10-07 19:11:58
【问题描述】:
我收到了错误:
Invalid column name 'Reserved'
我不确定这是在我的数据库代码中的什么位置,并且有 100 多个存储过程、函数和触发器,我必须手动查看这些以找到对未知列的引用。
有没有办法快速搜索哪些对象包含这个关键字?
【问题讨论】:
标签: sql-server-2008 search stored-procedures triggers user-defined-functions
我收到了错误:
Invalid column name 'Reserved'
我不确定这是在我的数据库代码中的什么位置,并且有 100 多个存储过程、函数和触发器,我必须手动查看这些以找到对未知列的引用。
有没有办法快速搜索哪些对象包含这个关键字?
【问题讨论】:
标签: sql-server-2008 search stored-procedures triggers user-defined-functions
试试这个:
SELECT o.name, t.TABLE_NAME, c.text
FROM syscomments c
JOIN sysobjects o
ON c.id = o.id
JOIN INFORMATION_SCHEMA.Tables t
ON c.text LIKE '%reserved%'
或者,如果您要查找包含名为 Reserved 的列的表,您可以这样做:
select o.name
from sys.objects o
inner join sys.columns c
on o.object_id = c.object_id
where o.type = 'u' and c.name = 'Reserved'
如果您想过滤特定类型的对象(例如过程、视图或表)的搜索,您可以添加“p”表示存储过程,“v”表示视图,“u”表示用户定义的表,' tr' 用于触发器,例如:
AND o.type = 'p'
【讨论】:
views, stored procedures, user defined tables, triggers 以及 函数、约束、规则、默认值 ?
([NumeroUsadas]<=[NumeroTotal] AND [NumeroTotal]>=(0))。对我来说,这 c.text LIKE '%[NumeroTotal]%' 不起作用,'%[[NumeroTotal]]%' 也不起作用
JOIN INFORMATION_SCHEMA.Tables t 没有 on t.xxx = c.yyy ?只有ON c.text?恕我直言更好:SELECT o.name, o.type, o.xtype, c.text , USER_NAME(o.uid) + '.' + OBJECT_NAME(c.id) AS 'Object name' FROM syscomments c JOIN sysobjects o ON c.id = o.id where c.text LIKE '%NumeroTotal%' or c.text LIKE '%NumeroUsadas%'
使用RedGate's SQL Search 扩展可能也能提供帮助
【讨论】: