Клонировать всю базу данных с помощью SP - PullRequest
0 голосов
/ 04 января 2010

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

Ответы [ 3 ]

5 голосов
/ 04 января 2010

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

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

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

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

  • используйте инструмент "diff", такой как Redgate SQL Compare , чтобы сравнить два сервера и обновить второй

0 голосов
/ 04 января 2010

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

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

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

Скачать здесь

0 голосов
/ 04 января 2010

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

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

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

...