Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET应用程序未使用故障转移伙伴_Vb.net_Sql Server 2008_Sql Server 2008 R2_Mirroring_Database Mirroring - Fatal编程技术网

VB.NET应用程序未使用故障转移伙伴

VB.NET应用程序未使用故障转移伙伴,vb.net,sql-server-2008,sql-server-2008-r2,mirroring,database-mirroring,Vb.net,Sql Server 2008,Sql Server 2008 R2,Mirroring,Database Mirroring,我有一个连接到SQL Server的VB.NET应用程序 我们最近添加了数据库镜像,以防服务器出现故障 当然,我们的SQL Server失败了,但VB.NET应用程序并没有故障转移 我发现在我们的代码中,连接字符串中没有指定故障转移伙伴,因此我更新了连接字符串,如下所示: sConnectionString = "Data Source=PROD-SQL;Failover Partner=FAILOVER-SQL;Initial Catalog=DB;User ID=****;Password=

我有一个连接到SQL Server的VB.NET应用程序

我们最近添加了数据库镜像,以防服务器出现故障

当然,我们的SQL Server失败了,但VB.NET应用程序并没有故障转移

我发现在我们的代码中,连接字符串中没有指定故障转移伙伴,因此我更新了连接字符串,如下所示:

sConnectionString = "Data Source=PROD-SQL;Failover Partner=FAILOVER-SQL;Initial Catalog=DB;User ID=****;Password=******;"
SqlClient.SqlConnection
对象接受此连接字符串,但当我调用其
.Open()
命令时,它失败,出现以下错误:

"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"
为什么会这样?我们的intranet应用程序故障恢复得很好(使用DSN连接的经典ASP)

应用程序是否必须至少与主服务器建立一次成功的初始连接,然后才能成功进行故障切换


谢谢

在您的主要数据库上运行此命令

SELECT DB_NAME(database_id) AS 'DatabaseName'
, mirroring_role_desc 
, mirroring_safety_level_desc 
, mirroring_state_desc 
, mirroring_partner_instance
FROM
sys.database_mirroring WHERE mirroring_guid IS NOT NULL; 
镜像\u合作伙伴\u实例中返回的值是将由您的连接用于故障转移的服务器名称,而不是failover-SQL。FAILOVER-SQL将在它首次尝试获取连接但无法联系PROD-SQL时使用。如果PROD-SQL可用,则故障转移伙伴将从SQL server值镜像\u partner\u实例设置在缓存中


请参阅此处了解更多信息:

在您的主体数据库上运行此命令

SELECT DB_NAME(database_id) AS 'DatabaseName'
, mirroring_role_desc 
, mirroring_safety_level_desc 
, mirroring_state_desc 
, mirroring_partner_instance
FROM
sys.database_mirroring WHERE mirroring_guid IS NOT NULL; 
镜像\u合作伙伴\u实例中返回的值是将由您的连接用于故障转移的服务器名称,而不是failover-SQL。FAILOVER-SQL将在它首次尝试获取连接但无法联系PROD-SQL时使用。如果PROD-SQL可用,则故障转移伙伴将从SQL server值镜像\u partner\u实例设置在缓存中


有关更多信息,请参见此处:

嗯,错误表明涉及命名管道,并且有:“因为命名管道不使用TCP/IP重试算法,在许多情况下,命名管道连接尝试可能在连接到镜像数据库之前超时。”您能够调整以尝试使用TCP/IP吗?如果我先切换连接字符串以连接到故障转移服务器,它可以正常工作。我如何调整它以尝试使用TCP/IP呢?请参阅我链接到的页面。添加
Network=dbmssocn到连接字符串。错误表明涉及命名管道,并且有:“因为命名管道不使用TCP/IP重试算法,在许多情况下,命名管道连接尝试可能在连接到镜像数据库之前超时。”您能够调整以尝试使用TCP/IP吗?如果我先切换连接字符串以连接到故障转移服务器,它可以正常工作。我如何调整它以尝试使用TCP/IP呢?请参阅我链接到的页面。添加
Network=dbmssocn到连接字符串。