我最近开始处理一个遗留应用程序,该应用程序的大部分业务逻辑都在分布在两个或三个 SQL Server 数据库上的存储过程中。目前所有代码也在实时环境中编辑。
由于我是代码库的新手,我真的不想在实时环境中进行任何更改,因此我正在尝试设置一个开发环境。我们正在使用 Visual Studio 编写所有数据库对象的脚本,并在 Subversion 中跟踪这些对象。 然后我可以设置一个开发 SQL Server 实例来工作,但一个问题是代码充满了对服务器和数据库名称的硬编码引用,例如许多存储过程看起来如下所示:
CREATE PROCEDURE server1.db1.dbo.proc1 AS
INSERT INTO db1.dbo.table1
EXEC server2.db2.dbo.proc2
END
如何以安全的方式更改所有这些引用?到目前为止,我想到了两种选择:
1) 有一个脚本可以运行全局搜索并替换我的颠覆工作副本上的服务器名称,然后针对我的测试数据库运行修改后的代码。
2) 通过编辑我的\windows\system32\drivers\etc\hosts 文件在我的本地机器上设置一个 dns 别名,该文件将 server1 和 server2 重定向到数据库的开发实例。在生产服务器上,这些将指向生产数据库。
您认为以下哪种设置更好?您是否看到我忽略的任何风险以及应该考虑的风险?
最佳答案
如果所有引用都指向链接服务器“Server2”等,那么您可以在开发箱中为该链接服务器指定不同的底层 SQL Server
您可以执行以下操作之一:
- 使用sp_setnetname创建后
- 设置sp_addlinkedserver 的@datasrc在创建过程中。这separates来自实际服务器名称的链接服务器名称
关于sql-server - 如何搭建SQL Server存储过程的开发环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3523862/