c#连接字符串因数据库移动而更改

c#连接字符串因数据库移动而更改,c#,database-connection,connection-string,C#,Database Connection,Connection String,我们正在将数据库从一台服务器移动到另一台服务器。因此,有许多应用程序的连接字符串需要更改。是否有任何通用方法可以保留连接字符串,以便如果再次移动数据库,则不会出现此问题???将连接字符串保存在xml文件中,然后读取xml文件并从中获取连接字符串。您只需要更改xml文件中的连接字符串,而不需要更改已发布代码中的连接字符串。顺便说一下,您可以为调试和发布模式设置多个连接字符串,并让应用程序选择它。您可以将它们存储在数据库中。^ 撇开玩笑不谈,我自己没有这方面的经验,但使用别名听起来可能最适合您: 首

我们正在将数据库从一台服务器移动到另一台服务器。因此,有许多应用程序的连接字符串需要更改。是否有任何通用方法可以保留连接字符串,以便如果再次移动数据库,则不会出现此问题???

将连接字符串保存在xml文件中,然后读取xml文件并从中获取连接字符串。您只需要更改xml文件中的连接字符串,而不需要更改已发布代码中的连接字符串。顺便说一下,您可以为调试和发布模式设置多个连接字符串,并让应用程序选择它。

您可以将它们存储在数据库中。^

撇开玩笑不谈,我自己没有这方面的经验,但使用别名听起来可能最适合您:

首先,您可以将连接字符串存储在外部文件(自定义存储或.config文件)中,这样您就可以在不重新编译代码的情况下更改它们。
第二,您可以使用域名而不是IP地址

第三,您可以将连接字符串存储在部件中,并通过ConnectionStringBuilder在运行时构建它们,这样您就可以只更改服务器部件

有很多方法可以解决这个问题

最终,听起来您想要做的是集中化数据库连接字符串,使数据库迁移对应用程序(大部分)透明。我可以在这里想出几个选择:

  • 使用包含连接字符串和配置的“控制数据库”。如果迁移到新的数据库服务器,则只需更新应用程序中的单个连接字符串,并对所有其他内容执行数据更新。这是我个人使用的

  • 使用在应用程序启动时解析的中心XML配置文件

  • 使用SQL Server别名和/或向可以在服务器之间迁移的计算机添加其他IP。这样,当您移动到一个新的数据库服务器时,您仍然可以将现有别名/IP带到该服务器(当然,除非它们需要并行运行),并且理论上不需要更新代码中的任何内容,前提是您引用了适当的别名。有关更多信息,请参见此处:


  • 在这里,我们最终选择了选项1,因为与XML配置文件(#2)相比,它给了我们更多的灵活性和可靠性,并且需要更少的配置和特殊情况与我们的DBA一起记录,因为我们在开发环境之外没有任何数据库服务器的所有权

    将连接字符串放在某种中心位置。我想有几十种方法可以做到这一点。为数据库计算机配置一个固定的dns名称。如果您的db计算机发生更改,只需更改dns条目即可。有各种各样的例子,特别是使用外部配置文件的例子。您可以将应用程序指向此文件您好,谢谢您的回复@拉尔夫,你能解释一下我将如何实施这一点吗。如果我只是更改dns条目,那么我就不必接触所有应用程序的配置文件???如果connectionsstrings中的服务器名已经映射到a/dns记录号中的名称。您只需将该dns记录的ip地址更改为新机器的ip地址即可。只要您不需要在连接字符串中更改更多的用户名/密码,端口等。但是如果您使用connectionstring向用户分发某些凭据,那么您已经有其他问题需要首先解决,在解决这些问题的过程中,集中connectionstring并使其脱离用户的控制只是一个细节。