2010-01-04 6 views
0

Я пытаюсь выяснить, возможно ли это, но до сих пор я не нашел никаких хороших решений. Я бы хотел написать хранимую процедуру, которая может клонировать базу данных, но без сохраненных данных. Это означает, что все таблицы, представления, ограничения, ключи и индексы должны быть включены, но без каких-либо данных. Это можно сделать?Клонировать всю базу данных с помощью SP

ответ

0

Я успешно использовал мастер публикации баз данных Microsoft SQL Server для этой цели. Это довольно просто, без необходимости кодирования. Вот пример вызова:

sqlpubwiz сценарий -d имя_базы_данных -S ServerName -schemaonly C: \ Projects2 \ Хлам \ DatabaseName.sql

Я считаю, что по умолчанию для создания как данные и схемы, но вы можете использовать параметр schemaonly.

Скачать here

5

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

Это возможно - не очень приятно и легко сделать. Особенно зависимости между объектами может вызвать больше головной боли, чем кажется на первый взгляд ....

Вы можете также:

  • использовать что-то вроде SQL Server Management Studio (если вы на SQL Server - вы не уточнил) и создавать скрипты вручную, а просто переоформить их на отдельном сервере

  • использовать «дифф» инструмент как Redgate SQL Compare для сравнения двух серверов и имеют второй один воспитан на сегодняшний день

0

В SQL Server вы можете прокручивать системные таблицы (sys.tables, sys.columns и т. Д.) И строить вещи по одному. Вначале это будет очень ручным и подверженным ошибкам, но оно должно стать систематическим довольно быстро.

Другой способ сделать это - написать что-нибудь в .Net, используя SMO. Проверить эту ссылку:

http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated

Смежные вопросы