Клонирование базы данных с образцами данных в таблице

#sql-server #tsql

#sql-сервер #tsql

Вопрос:

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

 -- ensure "master" is selected in SSMS
IF EXISTS(select * from sys.databases where name='shoesales_TEST')
ALTER DATABASE shoesales_TEST set single_user with rollback immediate
GO
IF EXISTS(select * from sys.databases where name='shoesales_TEST')
DROP DATABASE shoesales_TEST
GO
DBCC CLONEDATABASE   
(  
    shoesales
    , shoesales_TEST
)
GO
ALTER DATABASE shoesales_TEST SET READ_WRITE
GO
USE shoesales_TEST
GO
INSERT INTO shoesales_TEST.dbo.sizesales
SELECT TOP 30 * FROM shoesales.dbo.sizesales
GO
  

Комментарии:

1. Ваш скрипт отлично работает для меня (я заменил первоначальный комментарий на use master и использовал небольшую базу данных с установленным для ведения Simple журнала). У вас где-нибудь открыта другая вкладка / соединение? Дважды проверьте текущие соединения с exec sp_who помощью .

2. @Sander спасибо, добавление в USE master помогло, и я убедился, что никто другой не подключался к базе данных, и снова запустил скрипт