我有一个使用一个SQL数据库的网站,但托管公司有时非常慢,我有数据库超时,登录和类似错误。我可以实现我的代码同时使用两个数据库吗?我有存储过程,数据会定期更新。
修改 简单地说:当dbDefault关闭且无法访问时,我需要使用dbSecondary,以便Web应用程序继续运行。 Ant这两个数据库必须始终相同。
修改 一些错误:
答案 0 :(得分:4)
负载平衡和/或故障转移群集数据库服务器通常涉及大量工作。
您需要确保在两个数据库服务器之间合并复制所有数据。除非您有专用服务器,否则托管服务提供商很少提供此选项。
允许合并复制可能涉及重新设计数据库的部分内容;这可能是不可行的。
除非您愿意投入大量时间和金钱,否则只需将托管服务提供商转换为具有更好数据库支持的服务提供商,您就会好得多。考虑到有成千上万的这类公司,这是一个简单的解决方案。
<强>更新强>
您在编辑中发现的几乎所有错误通常都归因于未能正确处理连接,命令和读取器。您可能需要查看代码以确保正确访问sql server。每个连接,命令和阅读器都应该包含在using子句中,以确保它们被正确释放回连接池。
如果您提供数据访问代码示例(请提出新问题),我们可以帮助您重写它。
答案 1 :(得分:1)
不是。
数据一致性和完整性:
防火墙,远程服务器等:
误解:
数据库超时当然可能与代码有关,它可能无法帮助您拥有2个具有相同代码或设计相同的数据库......
不是一个好的答案,但如果您的主机提供的服务很差,那么您的选择是有限的
答案 2 :(得分:1)
总是找到Timeout的原因,如果它在你的代码中,而不是通过优化查询等来纠正代码。
我认为您需要的是故障转移服务器,如果一台服务器关闭,您可以切换。
或者
你可以在web.config中维护两个连接字符串,如果一个服务器关闭,可以切换到其他服务器。
在这两种方法中,您需要设计一个策略来同步服务器。
答案 3 :(得分:1)
如果你的数据库同步(这是你要做的事情的明显要求),最好的解决方案是依赖于负载均衡器,但如果不能,我猜你的目标是运行查询同时针对两个数据库并返回第一个结果,否则您将不得不等待超时对第二个服务器运行请求。
那么你需要的是异步sql命令吗?