我有两台 SQL Server 机器,server1
它们server2
是冗余的并且具有相同的数据。
我的应用程序希望msdb
每 1 秒从数据库中的表中选择数据。但是我的应用程序只能使用一个连接字符串进行连接。如何编辑我的应用程序可以在两台服务器上重复工作?
- SQL Server 2000 SP4
- 窗口服务器 2003
- C#
我的连接字符串是
server=10.15.13.70;database=msdb;user id=sa;pwd=""
请给我提意见。
我有两台 SQL Server 机器,server1
它们server2
是冗余的并且具有相同的数据。
我的应用程序希望msdb
每 1 秒从数据库中的表中选择数据。但是我的应用程序只能使用一个连接字符串进行连接。如何编辑我的应用程序可以在两台服务器上重复工作?
我的连接字符串是
server=10.15.13.70;database=msdb;user id=sa;pwd=""
请给我提意见。
随机选择一个服务器,并在打开连接之前在连接字符串中插入该服务器的名称或 IP。
using (SqlConnection _con = new SqlConnection("server=" + giveMeAServer() + ";database=msdb;user id=sa;pwd="))
和:
private String giveMeAServer()
{
return "10.15.13.70";
}
正确的解决方法,特别是如果您每秒重新连接一次,最有可能在 SQL Server 端设置某种集群并连接到该集群,而不是让您的应用程序担心数据库后端的负载平衡。
更好的是你尝试打开连接一段时间比如5ms,如果连接不能打开,通过连接字符串切换到其他服务器
您正在寻找的是Load balancing
. 这是一种只能应用于只读数据库的技术。它基本上将负载分散到多个服务器上。
这是 Microsoft 的关于使用 SQL Server 2000 进行负载平衡的好读物。
http://technet.microsoft.com/en-us/library/cc917707.aspx
恕我直言,您尝试实现的目标不应以编程方式处理,而应在硬件级别上处理。
Data Source=myServerAddress;Failover Partner=myMirrorServerAddress;Initial Catalog=myDataBase;Integrated Security=True;