在SQL Server 2005中,有没有办法在.NET应用程序中指定多个连接字符串,其中一个是主要的首选连接,但如果不可用,则默认尝试另一个连接(可能会到差异数据库/服务器等)?
如果没有沿着那些确切的行,我们可以使用什么,而不是试图编写某种循环代码来检查连接?
感谢。
答案 0 :(得分:1)
我们通常会在SqlConnection对象上使用composition来检查这一点。所有数据访问都是通过后端类完成的,我们在web / app.config中指定了多个服务器。 (原谅任何错误,我实际上是手工写出来的)
它看起来像这样:
class MyComponent
{
private SqlConnection connection;
....
public void CheckServers()
{
// Cycle through servers in configuration files, finding one that is usable
// When one is found assign the connection string to the SqlConnection
// a simple but resource intensive way of checking for connectivity, is by attempting to run
// a small query and checking the return value
}
public void Open()
{
connection.Open();
}
public ConnectionState State
{
get {return connection.State;}
set {connection.State = value;}
}
// Use this method to return the selected connection string
public string SelectedConnectionString
{
get { return connection.ConnectionString; }
}
//and so on
}
此示例不包含错误检查或错误日志记录,请确保添加该错误,因此对象可以选择报告哪些连接失败以及原因。
答案 1 :(得分:1)
假设您想要访问同一组数据,那么您可以使用群集或镜像来提供高可用性。
SQLNCLI provider支持SQL Server数据库镜像
Provider=SQLNCLI;Data Source=myServer;Failover Partner=myMirrorServer
群集只使用虚拟SQL实例名称。
否则,我无法理解你为什么要这样做......
答案 2 :(得分:0)
不幸的是,没有FCL方法可以做到这一点 - 你需要自己实现它。