В MS SQL Server 2008 R2 как создать новую базу данных на основе старой схемы, но без копирования каких-либо данных вместе с ней? Я использую студию управления SQL Server.
MS SQL 2008 - Создайте копию базы данных без данных
Ответ 1
Щелкните правой кнопкой мыши базу данных и выберите Tasks
→ Generate Scripts
.
Затем вы можете выбрать все требуемые объекты или только определенные объекты.
Есть несколько Script параметров, которые вы должны посмотреть:
- Script ИСПОЛЬЗОВАТЬ БАЗА ДАННЫХ - вы должны установить значение false, если вы создаете новую базу данных с другим именем.
- Индексы и триггеры не являются сценариями по умолчанию
- Разрешения для входа и уровня объекта не являются сценариями по умолчанию
- Сгенерировать Script для зависимых объектов - по умолчанию установлено значение false, но вы можете изменить его на true, чтобы гарантировать, что все объекты написаны сценарием.
Вы можете либо создать их в новом окне запросов, либо сохранить их в файлах SQL.
Ответ 2
Резюме
Этот script был создан, чтобы упростить практическое перемещение базы данных на главном веб-сайте между очень-разной схемой базы данных. Этот script выполнит следующие задачи:
- Резервное копирование последней версии вашей схемы с данными. (Пример: База данных Dev)
- Отбросить целевую базу данных, если она существует
- Восстановить резервную копию в целевой тестовой базе данных
- Удалить все данные в целевой базе данных, несмотря на ограничения и внешние ключи
Инструкции по использованию
Часть 1
Вероятно, вы захотите получить код для этого из SSMS с помощью диалогового окна резервного копирования. Нажмите значок окружности, чтобы получить script для вашего конкретного сценария.
- Если вы это сделаете, не забудьте установить "перезаписать" в параметрах резервного копирования до создания script - мы не хотим добавлять к набору резервных копий.
Часть 2
Не забывайте включать команду USE MASTER
перед удалением базы данных назначения. Если вы запустите этот script во второй раз в одном сеансе SSMS, вы получите фатальную ошибку, если вы не включите эту команду. Мы также используем DROP DATABASE
здесь, чтобы не только удалить устаревший TargetDB, но и удалить его файлы (обратите внимание, что DB должен быть "активным", чтобы это работало)
Часть 3
Вы можете использовать диалог SSMS для создания этого первоначального восстановления script для вас, аналогично тому, как это было сделано для части 1 для резервного копирования.
Часть 4
Не используйте Truncate здесь - это не сработает, если у вас есть внешние ключи
Исходный код (выполняется в SSMS)
----------------------------------------------------------------------------------------
-- CREATE AN EMPTY COPY OF DATABASE
----------------------------------------------------------------------------------------
/* PART 1: Backup the good database */
BACKUP DATABASE [OriginalDB]
TO DISK = N'd:\backup.bak' WITH NOFORMAT, INIT,
NAME = N'OriginalDB-Full Database Backup', SKIP,
NOREWIND, NOUNLOAD, STATS = 33
GO
/* PART 2: If your destination database already exists, drop it */
USE master -- Make sure to include this -- it allows you to reuse script in same SSMS session
DROP DATABASE [migration]
/* PART 3: Restore the backup to the new location */
RESTORE DATABASE [TargetDB]
FROM DISK = N'D:\backup.bak' WITH FILE = 1,
MOVE N'OriginalDB' TO N'D:\sql data\TargetDB.mdf',
MOVE N'OriginalDB' TO N'C:\SQL Data\TargetDB_1.ldf',
NOUNLOAD, STATS = 33
GO
/* PART 4: Delete all tables' data in the migration testing target */
PRINT N'Clearing [TargetDB]'
USE [TargetDB]
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all" -- disable all constraints
EXEC sp_MSForEachTable "DELETE FROM ?" -- delete data in all tables
exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all" -- enable all constraints
----------------------------------------------------------------------------------------
-- BLANK DATABASE COPY CREATED, READY FOR TESTING
----------------------------------------------------------------------------------------
Ответ 3
Есть хороший мастер script, который может вам помочь. Вы можете попробовать его щелкнуть правой кнопкой мыши по базе данных из объекта explorer → Tasks → Generate Scripts. Вы можете выбрать, какие объекты из базы данных вы хотите экспортировать.
Ответ 4
В SQL Server Management Studio вы можете щелкнуть мышью по объекту и выбрать...
"Script [Object] As" ... "CREATE to"... "New Query Window"
Вам нужно будет создать скрипты для каждого объекта, который вы хотите создать.
Если вы хотите сделать всю партию, щелкнуть мышью по базе данных и выбрать
"Задачи"... "Сгенерировать скрипты" и следуйте за мастером, как это описано в статье: