Ошибка истечения времени ожидания при использовании мастера копирования базы данных

8

Microsoft заставила меня поверить, что Мастер копирования баз данных SQL Server 2012 является наиболее оптимальным способом копирования базы данных SQL Server 2000 в SQL Server 2012. Пройдя несколько часов, я смог преодолеть некоторые проблемы и смог импортировать небольшие файлы в базы данных SQL Server 2000 среднего размера в SQL Server 2012.

Однако мастер постоянно терпит неудачу для базы данных 30 ГБ с этими ошибками:

Сообщение: при передаче данных произошла ошибка. Смотрите внутреннее исключение для деталей.
StackTrace: в Microsoft.SqlServer.Management.Smo.Transfer.TransferData ()
в Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer ()
InnerException -> истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает.
СОЗДАТЬ БАЗУ ДАННЫХ не удалось. Некоторые имена файлов не могут быть созданы. Проверьте связанные ошибки.
StackTrace:
в System.Data.SqlClient.SqlConnection.OnError (исключение SqlException, логическое breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ()
в System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

Я дважды проверил, это не проблема пути к файлу, разрешения или места на диске. Я думаю, что этот CREATE DATABASEшаг занимает 2 минуты или около того, и мастер предполагает, что время операции истекло. Я вручную создал пустую базу данных с тем же путем к файлу и размером файла, используя SQL, который работал. Интересно, что копия базы данных объемом 1 ГБ завершилась с такими же ошибками и преуспела со второй попытки.

Пожалуйста помоги.

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

Ответы:

7

Гораздо более эффективный путь, чем возиться с этим мастером:

  1. Сделайте полную резервную копию своей базы данных 2000 года.
  2. Восстановите его до экземпляра SQL 2005, 2008 или 2008 R2, который поддерживает 2000 баз данных. Вы все еще можете получить ознакомительную версию 2008 R2 здесь , если у вас нет соответствующих экземпляров. Обратите внимание, что Express не будет работать, поскольку имеет ограничение на размер файла данных 4 ГБ / 10 ГБ в зависимости от версии.
  3. Измените уровень совместимости на уровень выше 80 (90 или 100, в зависимости от того, использовали ли вы 2005 или 2008/2008 R2) ALTER DATABASE.
  4. Сделайте полную резервную копию этой базы данных после того, как она перестанет работать в режиме совместимости 80.
  5. Восстановите эту новую резервную копию в своем экземпляре SQL Server 2012.
  6. Измените уровень совместимости на 110 и обновите статистику.
  7. ТЕСТ .
Аарон Бертран
источник
У меня установлен SQL 2012, это нормально, если я установлю SQL 2008 R2 на тот же компьютер? Имеет ли значение порядок установки?
Салман А
Да, вы можете установить 2008 R2 на тот же компьютер, но для простоты просто установите ядро ​​базы данных, без инструментов клиента и все такое. Вы можете удалить экземпляр 2008 R2 после того, как перенесли все свои базы данных 2000 с 2000 года.
Аарон Бертран
1
Я бы не советовал устанавливать версии, которые вам не нужны, на рабочие машины, но нет, это не мешает, но вы можете получить некоторые предупреждения об общих компонентах. Однако, как правило, никогда не устанавливайте на prod ничего такого, что вам не нужно. Это увеличивает защитную поверхность для атак, вносит ошибки и увеличивает управление.
Али Разеги
1
@ Али, откуда ты знаешь, что машина, о которой говорит Салман, - это производственная машина? Или что это не единственная доступная машина?
Аарон Бертран
Вот почему я указал «на продукт» вместо «не делай этого» и ответил «но это не мешает». Что касается только доступного компьютера, вы можете установить их даже на настольных компьютерах, и, как указано, его база данных составляет 30 ГБ. Компьютеры с 30 ГБ свободного места довольно распространены, но опять же, это был просто совет, а не жесткий «это единственный ответ». Я посмотрел на его блог, и он очень сосредоточен на разработке, а это значит, что есть большая вероятность, что он не так увлечен лучшими практиками, как парень. Я думаю, что это хороший совет, я удивлен, как много людей занимаются разработкой, когда им это не нужно.
Али Разеги