データベースAをデータベースB(同じSQL Server)に完全にコピーしたい-それを行うのに最も簡単なSQLまたはユーティリティコマンドは何でしょうか?(データベースBは、コピーの前に100%消去する必要があります)
SQL以外のものでもかまいませんが、いずれの場合もワンクリックで実行する必要があります。したがって、ワンクリックまたはコマンドラインからコピーを実行できる限り、それを実行するユーティリティも受け入れられます。
SQLServer2008R2または2012。
最高、アスカー
データベースAをデータベースB(同じSQL Server)に完全にコピーしたい-それを行うのに最も簡単なSQLまたはユーティリティコマンドは何でしょうか?(データベースBは、コピーの前に100%消去する必要があります)
SQL以外のものでもかまいませんが、いずれの場合もワンクリックで実行する必要があります。したがって、ワンクリックまたはコマンドラインからコピーを実行できる限り、それを実行するユーティリティも受け入れられます。
SQLServer2008R2または2012。
最高、アスカー
デヴィッドの想いを元にソウルションを作りました。これは次のようになります ( Prod - ソース DB、Demo - 宛先コピー)
DECLARE @backup varchar(300) = 'e:\Prod.bak';
DECLARE @logic_db_file varchar(300) = 'koe';
DECLARE @logic_log_file varchar(300) = 'koe_log';
DECLARE @out_db_file varchar(300) = 'c:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Demo.mdf';
DECLARE @out_log_file varchar(300) = 'c:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Demo_log.ldf';
PRINT N'Backing up Production database.'
BACKUP DATABASE Prod
TO DISK = @backup WITH FORMAT;
PRINT N'Restoring FILELISTONLY, see log file for data.'
-- Restore the files to Demo
RESTORE FILELISTONLY
FROM DISK = @backup
PRINT N'Getting exclusive access to Demo'
Alter database Demo set single_user with rollback immediate
drop database Demo
PRINT N'Restoring backup to Test database'
RESTORE DATABASE Demo
FROM DISK = @backup
WITH REPLACE,
MOVE @logic_db_file TO @out_db_file,
MOVE @logic_log_file TO @out_log_file
GO
-- if you want you can do some SQL fixes to newly made DB
PRINT N'Changing normal users to demo users, if account type is OK'
USE Demo;
UPDATE USER_ACCOUNTS SET ACCOUNT_TYPE=3 WHERE (STATUS=1) AND (ACCOUNT_TYPE=1);
GO