Подтвердить что ты не робот

Создание дублирующей базы данных SQL для тестирования

Я создал базу данных на SQL-сервере и приложение для конечного пользователя в winforms С#. Он работает и работает нормально, но теперь меня попросили настроить тестовую версию для обучения новых сотрудников, чтобы они могли вводить фиктивные данные, пока они обучены, без реальной "реальной" базы данных.

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

Есть ли быстрый и удобный способ дублирования базы данных (и ее данных) на том же сервере, но под другим именем?

EDIT (после сообщения Тони Хопкинсона)

Я дошел до этого

exec sp_addumpdevice 'Disk','MyDatabaseBackup',N'D:\MyDatabaseBackup' 
Restore Database MyDatabase From MyDatabaseBackup With File = 1, 
Move 'MyDatabase' To N'C:\Program Files\Microsoft SQL 
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST.mdf', 
Move 'MyDatabase_Log' To N'C:\Program Files\Microsoft SQL 
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST_log.ldf', 
NORECOVERY,  NOUNLOAD,  STATS = 10 
RESTORE LOG [MyDatabaseTEST] FROM  [MyDatabaseBackup] WITH  FILE = 2,  NOUNLOAD,  STATS = 10 
exec sp_dropdevice MyDatabaseBackup 

Но я получаю следующее сообщение об ошибке

Msg 3234, уровень 16, состояние 2, строка 2 Логический файл "MyDatabase" не является частью базы данных "MyDatabase". Используйте RESTORE FILELISTONLY для отображения логических имен файлов. Msg 3013, уровень 16, состояние 1, строка 2 БАЗА ДАННЫХ RESTORE прекращается аномально. Msg 3154, уровень 16, состояние 4, строка 6 Набор резервных копий содержит резервную копию базы данных, отличной от существующей базы данных "MyDatabaseTEST". Msg 3013, уровень 16, состояние 1, строка 6 RESTORE LOG заканчивается анормально. Устройство сброшено.

4b9b3361

Ответ 1

использовать опцию копирования базы данных в студии управления SQL-сервером

enter image description here

Ответ 2

Я обнаружил, что этот метод наиболее эффективен в SQL Server 2005 и 2008 Express Edition:

Из Документов Microsoft:

  1. Щелкните правой кнопкой мыши базу данных, которую вы хотите скопировать, и выберите Tasks-> "Создать резервную копию..."
  2. Сохраните резервную копию в файл .bak
  3. Щелкните правой кнопкой мыши папку "Базы данных" в обозревателе объектов в SQL Server Management Studio
  4. Выберите "Восстановить базу данных"
  5. В качестве источника выберите "Файл" и укажите на файл .bak, который вы создали ранее.
  6. Измените имя базы данных для восстановления (это был ключевой шаг для меня - вы не ограничены опциями в раскрывающемся списке.)

SSMS восстановит ваш файл .bak в новую базу данных в соответствии с именем, которое вы ему дадите. enter image description here

Ответ 3

Сначала сделайте полную резервную копию своей текущей базы данных, которая, конечно же, у вас есть.

Вы восстанавливаете его на другой

например. что-то вроде

exec sp_addumpdevice 'Disk','LiveDataBackup',N'Insert backup file name here including path'
Restore Database TestData From LiveDataBackup With File = 1,
Move 'LiveData' To N'Path to where sqlserver expects the mdfs to be\TestData.mdf',
Move 'LiveData_Log' To N'Path to where sqlserver expects the ldf to be\TaxData1.ldf',
NORECOVERY,  NOUNLOAD,  STATS = 10
RESTORE LOG [TestData] FROM  [LiveDataBackup] WITH  FILE = 2,  NOUNLOAD,  STATS = 10
exec sp_dropdevice LiveDataBackup

Предположим, что ваша живая база данных хитро названа LiveData и test, TestData.

Путь туда, где mdf и ldf будет зависеть от версии sql-сервера и имени экземпляра

Это должно быть что-то вроде C:\Program Files\Microsoft SQL Server\MSSQL11.DENALI\MSSQL\DATA\

MSSQL11, потому что он sql 2012, и DENALI - мое имя экземпляра, и оно было установлено по умолчанию в C:\Program Files

Также нет no с заменой, поэтому, если вы хотите запустить его снова, вам нужно сбросить тестовую базу данных.

Скорее всего, это можно сделать из графического интерфейса, но я обнаружил, что массивный PIA пытается связать пользовательский интерфейс с тем, что я хотел сделать.

Ответ 4

используя MS SQLServer 2012, вам необходимо выполнить 3 основных шага

сначала сгенерируйте файл .sql, содержащий только структуру исходного DB

= > щелкните правой кнопкой мыши исходную БД и затем Задачи затем сгенерируют скрипты = > следуйте за мастером, и вы можете локально сохранить файл .sql

Во-вторых, замените в .sql файл исходной db на адрес назначения

= > щелкните правой кнопкой мыши по целевому файлу, откройте файл .sql и нажмите "Новый запрос" и Ctrl-H или (отредактируйте - найдите и замените - заменить Quack)

наконец, заполните данные

= > щелкните правой кнопкой мыши по БД деблокирования, затем Задачи, а затем Импорт данных = > Датчик данных источника данных установлен в ".net framework data procider for sql server" + установить текстовое поле строки подключения в DATA ex: Источник данных = Mehdi\SQLEXPRESS; Начальный каталог = db_test; Идентификатор пользователя = sa; Пароль = sqlrpwrd15
= > То же самое делать с пунктом назначения = > проверьте таблицу, которую вы хотите перенести, или установите флажок, кроме "source:.....", чтобы проверить все из них

вы закончили.

Ответ 5

  • Дамп вашей базы данных в файл резервной копии
  • Восстановите свою базу данных с вашего дампа - это script, который вы можете запустить, - с другим именем (которое вы должны изменить в script)

Вы можете следовать (this)

Ответ 6

Вы хотите скопировать одно Database_Production в Database_Testing на том же сервере. Я бы взял базу данных database_production в качестве примера. Я успешно проверил его на своем сервере.

Во-первых, сделайте резервную копию базы данных Database_Production.

резервная база данных Database_Production на диск = 'H:\test\Database_Production.bark';

Во-вторых, восстановите Database_Production, и это может переименовать имя базы данных в Database_Testing.

восстановить базу данных Database_Testing с диска = 'H:\test\Database_Production.bark' WITH переместите "Database_Production_Data" в "H:\test\Database_Testing_Data.mdf", переместите "Database_Production_log" в "H:\test\Database_Testing_Data.ldf"; GO

Затем база данных Database_Production копируется в базу данных Database_Testing. Оператор MOVE вызывает восстановление данных и файла журнала в указанных местах. Вам не нужно создавать базу данных Database_Testing, и скрипт создаст ее.