Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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
C# 在数据库之间切换,同时使用两个数据库_C#_Asp.net_Sql Server_Sql Server 2005 - Fatal编程技术网

C# 在数据库之间切换,同时使用两个数据库

C# 在数据库之间切换,同时使用两个数据库,c#,asp.net,sql-server,sql-server-2005,C#,Asp.net,Sql Server,Sql Server 2005,我有一个网站,使用一个SQL数据库,但托管公司有时非常慢,我得到了数据库超时,登录和类似的错误。我可以实现同时使用两个数据库的代码吗?我有存储过程,数据会定期更新 编辑: 简单地说:当dbDefault关闭且不可访问时,我需要使用dbSecondary,以便web应用程序继续运行。Ant这两个数据库必须始终相同 编辑: 一些错误: 向服务器发送请求时发生传输级别错误。(提供程序:TCP提供程序,错误:0-远程主机已强制关闭现有连接。) 建立与SQL Server的连接时发生与网络相关或特定于实

我有一个网站,使用一个SQL数据库,但托管公司有时非常慢,我得到了数据库超时,登录和类似的错误。我可以实现同时使用两个数据库的代码吗?我有存储过程,数据会定期更新

编辑: 简单地说:当dbDefault关闭且不可访问时,我需要使用dbSecondary,以便web应用程序继续运行。Ant这两个数据库必须始终相同

编辑: 一些错误:

  • 向服务器发送请求时发生传输级别错误。(提供程序:TCP提供程序,错误:0-远程主机已强制关闭现有连接。)
  • 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接)
  • 超时已过期。从池中获取连接之前经过的超时时间。发生这种情况的原因可能是所有池连接都在使用中,并且已达到最大池大小
  • 无法打开登录请求的数据库“db”。登录失败。用户“root”登录失败
    • 不太可能

      数据一致性和完整性:

      • 您如何决定在什么时候发送什么数据或拨打什么电话
      • 写的时候会发生什么
      防火墙、远程服务器等:

      • 如果您使用其他托管公司,您将如何连接
      误解:

      • 一台服务器上有两个数据库=绝对没有优势
      • 服务器可能过载,第二个db会使情况更糟
      数据库超时当然可能与代码有关,如果有两个数据库的代码或设计都相同,这可能对您没有帮助

      这不是一个很好的答案,但是如果您的主机提供的服务很差,那么您的选择就很有限

      数据一致性和完整性:

      • 您如何决定在什么时候发送什么数据或拨打什么电话
      • 写的时候会发生什么
      防火墙、远程服务器等:

      • 如果您使用其他托管公司,您将如何连接
      误解:

      • 一台服务器上有两个数据库=绝对没有优势
      • 服务器可能过载,第二个db会使情况更糟
      数据库超时当然可能与代码有关,如果有两个数据库的代码或设计都相同,这可能对您没有帮助


      这不是一个很好的答案,但是如果您的主机提供的服务很差,那么您的选择就很有限。如果超时在您的代码中,请查找原因,然后通过优化查询等方式更正代码

      我认为您需要的是一个故障转移服务器,如果一台服务器关闭,您可以在其中切换

      或者

      您可以在web.config中维护两个连接字符串,并且可以在其中一个服务器关闭时切换到其他服务器


      在这两种方法中,您都需要设计一种策略来同步服务器。

      首先要找到超时的原因(如果超时在代码中),然后通过优化查询等方式更正代码

      我认为您需要的是一个故障转移服务器,如果一台服务器关闭,您可以在其中切换

      或者

      您可以在web.config中维护两个连接字符串,并且可以在其中一个服务器关闭时切换到其他服务器


      在这两种方法中,您都需要设计一种策略来同步服务器。

      如果您的两个数据库都是同步的(这是您尝试执行的操作的一个明显要求),最好的解决方案是依赖负载平衡器,但如果您不能,我猜您的目标是同时对这两个数据库运行查询并返回第一个结果,否则您将不得不等待超时来对第二个服务器运行请求


      所以您需要的是异步sql命令,对吗?

      如果您的两个数据库都是同步的(这是您尝试执行的操作的一个明显要求),最好的解决方案是依赖负载平衡器,但如果您不能,我猜您的目标是同时对这两个数据库运行查询并返回第一个结果,否则您将不得不等待超时来对第二个服务器运行请求


      所以,您需要的是异步sql命令,对吗?

      负载平衡和/或故障转移群集数据库服务器通常涉及大量工作

      您需要确保所有数据在两个数据库服务器之间进行合并复制。托管提供商很少提供此选项,除非您有专用服务器

      允许合并复制可能需要重新设计数据库的某些部分;这可能不可行

      除非你愿意投入大量的时间和金钱,否则你最好只是把主机提供商换成一个有更好的数据库支持的提供商。考虑到有成千上万这样的公司,这是一个简单的解决办法

      更新

      您在编辑中发现的几乎所有错误通常都是由于未能正确处理连接、命令和读取器造成的。您可能需要检查代码以确保正确访问sql server。每个连接、命令和读取器都应该包装在一个using子句中,以确保它们被正确地释放回连接池


      如果您提供数据访问代码示例(请回答新问题),我们可以帮助您重新编写。

      负载平衡和/或故障转移群集数据库服务器通常涉及大量工作

      您需要确保所有数据在两个数据库服务器之间进行合并复制。托管提供商很少提供此选项,除非您有专用服务器

      允许f