我需要更改列的数据类型,但我不是数据库中可能引用它的每个位置.是否有脚本或应用程序可以搜索数据库中的所有视图,存储过程,函数,表计算列等,并显示引用该列的内容?我使用的是SQL Server 2005 Standard.
谢谢你,亚伦
您始终可以检查sys.columns目录视图:
SELECT
c.NAME 'Col Name',
OBJECT_NAME(c.OBJECT_ID) 'Table Name',
t.name
FROM
sys.columns c
INNER JOIN
sys.types t ON c.system_type_id = t.system_type_id
WHERE
c.Name = 'your-column-name-here'
Run Code Online (Sandbox Code Playgroud)
并根据该信息,您可以为数据库生成ALTER语句:
SELECT
'ALTER TABLE dbo.' + OBJECT_NAME(c.OBJECT_ID) +
' ALTER COLUMN ' + c.NAME ' NewDataType NULL'
FROM
sys.columns c
WHERE
c.Name = 'your-column-name-here'
Run Code Online (Sandbox Code Playgroud)
此查询生成一组ALTER TABLE ....语句,然后您可以将这些语句复制到SSMS查询窗口并执行.
警告的话:如果引用了任何列 - 在外键关系中,或者对它们有默认或检查约束 - 这种方法可能会失败.在这种情况下,您需要为这些列执行一些额外的步骤(例如首先删除约束等)
更新:这将搜索表中定义的列.
如果你需要搜索存储过程,视图和函数,我强烈建议使用Red-Gate的优秀和免费(!!)SQL搜索实用程序 - 优秀的东西!
| 归档时间: |
|
| 查看次数: |
3390 次 |
| 最近记录: |