gpt4 book ai didi

visual-studio-2010 - 可以在 SQL Server 中重构数据库吗?

转载 作者:行者123 更新时间:2023-12-01 12:53:58 26 4
gpt4 key购买 nike

我们有一个相对较新的数据库项目,在过去 6 个月左右的时间里我们一直在编写 View 和存储过程。

  • 数据库正常运行
  • 观点有效
  • 存储过程工作

但是,自从这个项目开始以来,项目的总体范围已经大大扩大,现在一些表名和字段名有点偏离基础。

例如,数据库中的主表名为 SheetMetalRequest,但项目已经发展到现在实际的钣金请求只是其中一种可枚举请求类型。因此,此表上的名称会误导进入该项目的人。

除了这个主表之外,其他表中的各种列也需要更改(例如,想想 SheetMetalRequestID)。

进行此更改的问题是 10 个不同的 View 和 30 个存储过程现在是该数据库的一部分。自然地,如果某些事情发生了变化,但并不是所有事情都随之发生变化,我们的工作生产前数据库可能需要几个工时才能恢复到运行状态。

如果有像 Visual Studio 中那样的重构能力,那就太好了

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition')

productversion | productlevel | edition
10.0.1600.22 | RTM | Standard Edition (64-bit)

最佳答案

如果像 SSDT 这样的工具出于某种原因不适合您,您可以按照自己的进度手动执行此操作。有时,“单击一个按钮并返回主页”方法实际上不是您想要的。

您可以从引入同义词开始,例如

CREATE SYNONYM dbo.Requests FOR dbo.SheetMetalRequest;

现在您可以分段重构代码,将每个引用指向新名称。当您确信已捕获所有引用时(即使使用像 SSDT 这样的工具也不容易,因为它看不到数据库外部的代码——甚至看不到当前数据库中动态 SQL 中的代码),您可以删除同义词并重命名表:

BEGIN TRANSACTION;
DROP SYNONYM dbo.Requests;
EXEC sp_rename 'dbo.SheetMetalRequest', 'Requests', 'OBJECT';
COMMIT TRANSACTION

(您还需要在循环中使用 sp_refreshsqlmodule 更新所有模块,两次,以确保您已完全纠正依赖关系。)

这将允许您更新代码的不同部分(不仅是 View /存储过程,还有中间层类甚至前端的东西)以引用正确的名称,而不必一次完成。

关于visual-studio-2010 - 可以在 SQL Server 中重构数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com