cin*_*nek 5 sql sql-server-2005 refactoring-databases
我相信这可能是相当常见的查询,但现在找不到好的答案.
这是我的问题:
我有一个名为Contacts with varchar column Title的表.现在在开发过程中,我想用TitleID替换字段Title,TitleID是ContactTitles表的外键.目前,表Contacts有超过60个依赖项(其他表,视图函数).
我怎样才能以最安全,最简单的方式做到这一点?
我们使用:MSSQL 2005,数据已经被迁移,只想更改架构.
编辑:
感谢All快速重播.
就像它提到的那样,Contacts表有超过60个dependents,但是当运行以下查询时,只有5个使用Title列.迁移脚本已运行,因此无需更改数据.
/*gets all objects which use specified column */
SELECT Name
FROM syscomments sc
JOIN sysobjects so ON sc.id = so.id
WHERE TEXT LIKE '%Title%' AND TEXT LIKE '%TitleID%'
然后我浏览了这5个视图并手动更新了它们.
对于 Microsoft SQL Server Redgate 有一个(非免费)产品可以帮助进行此重构http://www.red-gate.com/products/sql_refactor/index.htm
在过去,我可以通过简单地获取要审查的事项列表来非常轻松地(如果是原始的)做到这一点
SELECT * FROM sys.objects
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Contacts%'
Run Code Online (Sandbox Code Playgroud)
(并且可能考虑依赖关系信息并按对象类型进行过滤)
在 Management Studio 中编写所有感兴趣的脚本,然后简单地查看列表并查看所有内容并将 CREATE 更改为 ALTER。即使对于 60 个可能的依赖项,这也应该是一个非常简单且重复的更改。此外,如果您引用不存在的列,则在运行脚本进行 ALTER 时应该会收到错误消息。
如果您*在应用程序中的查询或即席 SQL 中使用,显然事情可能会更困难一些。
| 归档时间: |
|
| 查看次数: |
1462 次 |
| 最近记录: |