在我的 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 变量的名称。在重命名对话框窗口的便捷树视图中预览代码更改。