Зеркальное отображение базы данных SQL Server без свидетеля - PullRequest
2 голосов
/ 21 октября 2010

Я настроил зеркальное отображение базы данных для SQL Server 2005 для своей базы данных на двух разных компьютерах с SQL Server.Здесь не используется ни один свидетельский сервер.Я также вижу статус «Главный / Синхронизированный» и «Зеркало, Синхронизированный / Восстановление» соответственно на основном и зеркальном серверах для моей базы данных.

Теперь я хотел проверить, работает ли аварийное переключение на зеркальный сервер или нет.Поэтому я написал небольшое консольное приложение, как показано ниже.

try
{
    SqlConnection cn = new SqlConnection("data source=PRIMARYSQL1;Failover Partner=MIRRORSQL1;initial catalog=TESTDB;Integrated Security=SSPI;");
    SqlCommand cm = new SqlCommand("insert into department(name) values('Dept10')", cn);
    cn.Open();
    cm.ExecuteNonQuery();
}

Затем я отключил службы hSQL Server и SQL Agent на основном сервере и ожидал, что мое консольное приложение все еще будет работать нормально, но я получаю ошибку ниже.

"Произошла ошибка, связанная с сетью или конкретным экземпляром, при установлении соединения с SQL Server. Сервер не найден или недоступен. Убедитесь, что имя экземпляра правильное и что SQL Server являетсянастроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть подключение к SQL Server) "

Кроме того, после того, как основной сервер выходит из строя, я не могусделайте зеркальную базу данных первичной, поскольку она не позволяет мне делать это с зеркального сервера.

Я уверен, что делаю что-то не так.Кто-нибудь может мне помочь?

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

Вы ожидаете, что произойдет автоматическое переключение при сбое, но автоматическое переключение при сбое не может произойти без свидетеля. Учитывая, что любой экземпляр SQL Express, работающий на любом дешевом или устаревшем оборудовании, может выступать в качестве свидетеля, я настоятельно рекомендую добавить свидетеля и использовать автоматический переход на другой ресурс, а не выполнять переключение вручную с потенциальной потерей данных в случае первичной потери. .

0 голосов
/ 21 октября 2010

Я думаю, вы ищете что-то вроде этого (запустите это на зеркале):

ALTER DATABASE dbName SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS GO

...