我有一个windows服务应用程序,安装在两个服务器上,即SQL01和SQL02。在这两个服务器上都有一个SQL server (X1和X2),它们的内容相同。为一个名为Interface的数据库建立了镜像伙伴关系。
这两个服务都连接到它们的本地数据库,因此不知道另一个。该服务非常简单,它从数据库中读取数据,并在将其发送到远程数据库之前执行一些操作(这两个实例都是相同的)。使用一个简单的字体来确定数据库是否可用,或者不使用虚拟选择。如果数据库回答,那么它是可用的,否则就不是。
当我们第一次开始整个过程时,只有一个数据库明显地在工作(因为合作关系)。但是,当我们进行手动故障转移时,数据库似乎仍然
在紧急情况下,当我们不得不从一个数据库中删除一个损坏的数据库镜像( Server 2008)来重建它时,我们的c#网站开始偶尔(不是每个数据库连接)抛出一个异常。
System.Data.SqlClient.SqlInternalConnectionTds.LoginWithFailover函数调用中的"database未配置为数据库镜像“。
我明白为什么它会对缺少的镜像感到不高兴,但是我希望它停止破坏我的web请求--如果数据库镜像关闭,我的最终用户不应该受到影响。
如果主体数据库变得不可用,我们的应用程序需要使用不同(精简)版本的主体数据库。备份数据库将与主体数据库具有相同的结构和对象,某些表的数据将更少。
是否有一种方法可以设置数据库镜像,使其不发生真正的镜像,但.NET连接字符串的“failover partner”属性仍可用于连接到另一个数据库,而不会出现“database Is not configured for mirroring”错误?
谢谢。
我想要很少的建议,同时考虑对我们当前的数据库,即SQL Server 2012标准版本的azure。目前我们正在使用aws来管理我们的数据库,最近我们一直在考虑为我们的大型prod数据库使用活动读副本,但是看起来AWS没有针对MS SQL Server的read副本选项,而只有CDC(change data Capture )选项,这并不能解决我们的需求,因为CDC涉及手动加载除表及其主要索引之外的所有其他东西,而对于Aurora或mySQL,它们有正确的read副本选项。因此,我们想知道Azure女士在这种情况下是否会对我们更好。
提前感谢!