MS SQL 2008 - Создайте копию базы данных без данных

В MS SQL Server 2008 R2 как создать новую базу данных на основе старой схемы, но без копирования каких-либо данных вместе с ней? Я использую студию управления SQL Server.

Ответ 1

Щелкните правой кнопкой мыши базу данных и выберите TasksGenerate Scripts.

Затем вы можете выбрать все требуемые объекты или только определенные объекты.

Есть несколько Script параметров, которые вы должны посмотреть:

  • Script ИСПОЛЬЗОВАТЬ БАЗА ДАННЫХ - вы должны установить значение false, если вы создаете новую базу данных с другим именем.
  • Индексы и триггеры не являются сценариями по умолчанию
  • Разрешения для входа и уровня объекта не являются сценариями по умолчанию
  • Сгенерировать Script для зависимых объектов - по умолчанию установлено значение false, но вы можете изменить его на true, чтобы гарантировать, что все объекты написаны сценарием.

Вы можете либо создать их в новом окне запросов, либо сохранить их в файлах SQL.

Ответ 2

Резюме

Этот script был создан, чтобы упростить практическое перемещение базы данных на главном веб-сайте между очень-разной схемой базы данных. Этот script выполнит следующие задачи:

  • Резервное копирование последней версии вашей схемы с данными. (Пример: База данных Dev)
  • Отбросить целевую базу данных, если она существует
  • Восстановить резервную копию в целевой тестовой базе данных
  • Удалить все данные в целевой базе данных, несмотря на ограничения и внешние ключи

Инструкции по использованию

Часть 1

Вероятно, вы захотите получить код для этого из SSMS с помощью диалогового окна резервного копирования. Нажмите значок окружности, чтобы получить script для вашего конкретного сценария.

  • Если вы это сделаете, не забудьте установить "перезаписать" в параметрах резервного копирования до создания script - мы не хотим добавлять к набору резервных копий.

enter image description here

Часть 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"

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

Если вы хотите сделать всю партию, щелкнуть мышью по базе данных и выбрать

"Задачи"... "Сгенерировать скрипты" и следуйте за мастером, как это описано в статье: