我正在通过SMO 命名空间将一些现有的(动态)SQL 移植到 C# 。不过,我在弄清楚如何将现有数据库加入我的 AlwaysOn 可用性组时遇到了一些麻烦。SMO 命名空间有一个Database 对象和一个AvailabilityDatabase 对象,但两者似乎有些正交……我看不到在这两个概念之间来回移动的方法。在我们现有的实现中,我们创建数据库,对其执行一些操作,创建完整备份,然后将其加入可用性组。我正在尝试在 SMO 中重新创建此工作流,但在加入可用性组步骤时被挂断了。如果我这样做...
AvailabilityGroup ag = new AvailabilityGroup(sqlServer, myExistingAgName);
AvailabilityDatabase agDb = new AvailabilityDatabase(ag, myExistingDbName);
agDb.JoinAvailablityGroup();
操作失败并告诉我尚未创建可用性数据库。但是,如果我这样做...
AvailabilityGroup ag = new AvailabilityGroup(sqlServer, myExistingAgName);
AvailabilityDatabase agDb = new AvailabilityDatabase(ag, myExistingDbName);
agDb.Create();
agDb.JoinAvailablityGroup();
操作失败并告诉我可用性数据库的创建失败。尽管错误消息没有明确说明这一点,但我认为失败的原因是名称为的数据库myExistingDbName
已经存在,这是预期的。我确定我只是在这里遗漏了一些基本的东西,但是 MSDN 文档并不是很有说明性,而且我没有运气在网上找到任何此类事情的教程/示例。