存储过程和其他对象在磁盘上的位置?
问题描述:
问题:在磁盘上有什么地方可以找到数据库实例上每个过程/触发器的人类可读文件?存储过程和其他对象在磁盘上的位置?
我已经浏览了我的磁盘上的Program Files\Microsoft SQL Server\
,但它主要是.dll/.rll文件。
我问的原因是因为我的公司已决定将某个VARCHAR(10)
字段增加到VARCHAR(50)
,并且此字段在350多个存储过程/触发器中出现。我的工作是弄清楚哪些脚本需要修改以解释这个字段长度的增加。如果我可以写一个脚本来解析这些文件并找出与各种不同的正则表达式匹配的文件,那就太好了。
答
as shawnt00提到的存储过程[SP],函数,表定义等都存储在数据库文件本身而不是文件系统中。但是,您可以使用系统视图来查询SP或功能文本,以尝试查找您正在查找的列/变量。
一个例外是任何加密的对象,因为对象的文本定义不会以明文显示,而是会被加密,因此不会从这样的查询中返回。
SELECT
SCHEMA_NAME(o.schema_id) as SchemaName
,o.name AS ObjectName
,o.type
,o.type_desc
,m.definition as ObjectText
FROM
sys.sql_modules m
INNER JOIN sys.objects o
ON m.object_id = o.object_id
WHERE
m.definition LIKE '%VARCHAR(10)%'
在数据库本身。使用'syscomments'或'sys.sql_modules'。 – shawnt00