SQL 服务器结构重构

SQL 服务器结构重构

在我的 c# 代码中,我经常可以更改变量的名称,并且对它的所有引用也会更改。

是否有类似的功能允许我对 SQL 服务器中的对象执行此操作?我的一些表、列和存储过程需要重命名,但我当然希望它们保持正常运行。

答案1

问:有什么应用程序和功能可以做到这一点吗?

是的。

问:你应该使用它们吗?

可能不是。SQL 的问题在于很难捕获对对象名称的所有引用。

一个例子是动态 SQL - 构建字符串,然后将字符串作为查询执行的技术。我的存储过程可能有这样的代码:

DECLARE @StringToExecute
SET @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);

如果要将 dbo.MyTableName 重命名为其他名称,则必须查看存储过程和应用程序代码中的字符串。这确实很难做到,因为以下代码也是有效的:

DECLARE @StringToExecute
SET @StringToExecute = 'USE Database1;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);
SET @StringToExecute = 'USE Database2;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'

这会在两个不同的数据库中为两个不同的 MyTableName 构建两个不同的查询。

另一个例子是链接服务器查询。您的任何其他 SQL Server 都可以设置链接服务器、同义词、视图等来查询您现有的对象。

因此,对象名称更改和表重构实际上只能在以下情况下进行:

  • 你的应用还很年轻
  • 您对查询有非常严格的控制
  • 你知道查询来自哪里

答案2

如果您谈论的是 Linq to SQL 并在 Visual Studio 中更改 LINQ 对象定义,那么更新这些的典型方法是在设计器中删除并重新添加它们,然后找到它们的引用并将它们更新为新名称。如果您使用 DI 和类似存储库模式的东西,这很容易,因为引用都在一个区域,而不是分散在整个代码中。

答案3

如果你想买东西,看起来红门有适合你的东西。

答案4

我建议你尝试SQL 完成 它允许您通过为表、列、临时表和列、视图、存储过程和函数赋予有意义且自解释的名称来提高代码的可读性。SQL Complete 将自动更正对重命名对象的所有引用。

借助重命名功能,您还可以在几秒钟内更改本地和 SQLCMD 变量的名称。在重命名对话框窗口的便捷树视图中预览代码更改。

相关内容