Как скопировать базу данных SQL Server 2008 с помощью кода C #

Я хочу скопировать существующую схему базы данных SQL Server 2008, но не данные, в новую базу данных на том же сервере (например, MyDB => MyDB_Test) с помощью C #.

Я нашел образец кода на http://www.codeproject.com/KB/cs/CopyDBSchemaUsingSMO.aspx, который, кажется, делает именно то, что я хочу, но продолжал выдавать следующую ошибку в строке ddatabase.Create ():

Could not load file or assembly 'Microsoft.SqlServer.BatchParser,
Version=9.0.242.0, Culture=neutral,

PublicKeyToken = 89845dcd8080cc91 'или одну из его зависимостей. Системе не удается найти указанный файл. ":" Microsoft.SqlServer.BatchParser, Version = 9.0.242.0, Culture = нейтральный, PublicKeyToken = 89845dcd8080cc91 "

Я попытался найти недостающую DLL, но мне удалось найти только версию для SQL Server 2005. Я не уверен, следует ли мне использовать ее, искать альтернативную загрузку или использовать совершенно другой подход.

Любая помощь будет принята с благодарностью!


person Louis S. Berman    schedule 27.01.2010    source источник


Ответы (2)


Я видел неполные установки компонентов SQL Server 2008 на машинах - в этом случае просто перейдите на сайт загрузки Microsoft и возьмите себе Microsoft SQL Server 2008 Management Objects (чуть ниже среднего) в соответствующей версии (32-разрядная версия x86 или 64-разрядная версия x64 или IA64 64-битный - в зависимости от ваших потребностей).

Установите это и попробуйте еще раз.

Еще вы можете подумать о покупке и использовании существующего инструмента вместо того, чтобы писать весь код самостоятельно. Проверить, например, SQL Compare от Red-Gate, который позволяет вам сделать это - сравните два базы данных (их структура) и убедитесь, что они находятся на одном уровне.

person marc_s    schedule 27.01.2010
comment
Спасибо за быстрый ответ. Сейчас проверю. Что касается моей необходимости сделать это в коде, мне это нужно для автоматических интеграционных тестов ... - person Louis S. Berman; 27.01.2010
comment
Я установил объекты управления, но все равно получил ошибку: не удалось загрузить файл или сборку Microsoft.SqlServer.BatchParser, Version = 9.0.242.0, Culture = нейтральный, PublicKeyToken = 89845dcd8080cc91 или одну из его зависимостей. Системе не удается найти указанный файл.: Microsoft.SqlServer.BatchParser, Version = 9.0.242.0, Culture = нейтральный, PublicKeyToken = 89845dcd8080cc91 - person Louis S. Berman; 27.01.2010
comment
Хорошо, странно - вы нашли файл Microsoft.SqlServer.BatchParser.dll где-нибудь на вашем жестком диске? - person marc_s; 27.01.2010
comment
Версия 9.0, похоже, указывает на SQL Server 2005 ... Может быть, у вас установлены и SQL Server 2005, и 2008? Может быть, он просто подбирает (или ищет) не ту версию SMO ..... - person marc_s; 27.01.2010

На ум приходят несколько моментов, которые, я думаю, следует учитывать:

Похоже, это не будет разовым случаем, но вы захотите сделать что-то еще, поэтому я бы посоветовал:

  1. сохранение всех скриптов создания БД и их запуск. IMHO, это хорошо, что в любом случае в системе управления версиями
  2. иметь чистую (пустую) резервную копию базы данных (по сути, копию шаблона) и восстановить ее как новую БД
person AdaTheDev    schedule 27.01.2010