Published on

May 2, 2015

Понимание зависимостей SQL Server Cluster

Получение помощи и обучение друг у друга всегда полезно. Как энтузиаст SQL Server, я часто полагаюсь на своих SQL-друзей, чтобы направить меня в правильном направлении, когда я сталкиваюсь с чем-то незнакомым. Недавно я получил письмо от одного из читателей моего блога, Айши, который является разработчиком, но также случайным DBA. Она столкнулась с проблемой при попытке создать новую базу данных на двухузловом отказоустойчивом кластере SQL Server 2012. Айша добавила новый диск в группу SQL в кластере, но не смогла создать базу данных на новом диске.

Айша поделилась командой, которую она использовала для создания базы данных:

CREATE DATABASE [TestDatabase] ON PRIMARY 
( NAME = N'TestDatabase' , FILENAME = N'M:\SQLDATA\TestDatabase.mdf' ) 
LOG ON 
( NAME = N'TestDatabase_log' , FILENAME = N'N:\SQLLOG\TestDatabase_log.ldf' )

Однако она столкнулась с следующей ошибкой:

Msg 5184, Level 16, State 2, Line 1
Cannot use file ‘M:\SQLDATA\Testdatabase.mdf’ for clustered server. Only formatted files on which the cluster resource of the server has a dependency can be used. Either the disk resource containing the file is not present in the cluster group or the cluster resource of the SQL Server does not have a dependency on it.
Msg 1802, Level 16, State 1, Line 1
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

В своем ответе Айше я объяснил, что ей нужно понять зависимости ресурсов кластера. Зависимости определяют порядок, в котором ресурсы могут быть включены в кластер. Дочерний ресурс должен быть включен перед родительским ресурсом в кластере. В случае SQL Server IP-адрес и дисковый ресурс не зависят ни от чего, но SQL Network Name зависит от IP-адреса, а SQL Server зависит от Network Name и дискового ресурса. SQL Agent зависит от SQL Server.

Ошибка, с которой столкнулась Айша, указывала на то, что добавленные ею дисковые ресурсы после установки не являются зависимостями ресурса SQL Server. SQL Server не позволяет создавать базы данных на дисках, которые не являются зависимостями ресурса SQL Server, чтобы гарантировать, что диск будет включен перед тем, как SQL Server попытается получить доступ к файлам базы данных.

Я предоставил Айше следующие шаги для решения ее проблемы:

  1. Откройте Менеджер отказоустойчивого кластера из меню “Пуск” или перейдите в “Пуск” > “Выполнить” > “Cluadmin”.
  2. Выберите кластерное приложение, то есть группу, содержащую SQL Server.
  3. Щелкните правой кнопкой мыши на ресурсе “SQL Server” и выберите “Свойства”.
  4. Перейдите на вкладку “Зависимости”.
  5. Нажмите кнопку “Вставить”, чтобы добавить дополнительную строку и выберите общий диск (M), который будет содержать SQL-базы данных.
  6. Добавьте еще одну строку для диска N.
  7. Убедитесь, что все ресурсы требуются (рядом с последующими ресурсами есть “И” ) и нажмите “ОК”.

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

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

Спасибо за чтение и счастливого кластеризации SQL Server!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.