SQL Server 2008 Express의 동일한 서버에서 SQL Server 데이터베이스를 어떻게 복제 할 수 있습니까?

테스트 목적으로 ‘복사하고 이름을 바꾸려는’데이터베이스가 포함 된 MS SQL Server 2008 Express 시스템이 있지만이를 달성하는 간단한 방법을 모릅니다.

R2 버전의 SQL Server에는 데이터베이스 복사 마법사가 있지만 슬프게도 업그레이드 할 수 없습니다.

문제의 데이터베이스는 공연입니다. 새 데이터베이스에 복사하려는 데이터베이스의 백업을 복원하려고 시도했지만 운이 없습니다.



답변

  1. Microsoft 웹 사이트에서 무료로 다운로드 할 수있는 Microsoft SQL Management Studio를 설치하십시오.

    버전 2008

    Microsoft SQL Management Studio 2008은 고급 서비스 가 포함 된 SQL Server 2008 Express의 일부입니다.

    버전 2012

    클릭 다운로드 버튼 체크를ENU\x64\SQLManagementStudio_x64_ENU.exe

    2014 버전

    클릭하여 다운로드 버튼을 하고 MgmtStudio을 확인64BIT\SQLManagementStudio_x64_ENU.exe

  2. Microsoft SQL Management Studio를 엽니 다 .

  3. 원본 데이터베이스를 .BAK 파일로 백업합니다 (db-> 작업-> 백업).
  4. 새 이름 (복제)으로 빈 데이터베이스를 만듭니다. 이 옵션은 선택 사항이므로 아래 설명에 유의하십시오.
  5. 데이터베이스를 복제하고 복원 대화 상자를 열려면 클릭하십시오 (이미지 참조)
  6. 장치를 선택하고 3 단계에서 백업 파일을 추가하십시오.
  7. 테스트 데이터베이스로 대상 변경
  8. 데이터베이스 파일의 위치를 ​​변경하십시오. 원본과 달라야합니다. 텍스트 상자에 직접 입력하고 접미사를 추가하기 만하면됩니다. (참고 : 순서가 중요합니다. 확인란을 선택한 다음 파일 이름을 변경하십시오.)
  9. 교체 및 KEEP_REPLICATION으로 확인

답변

복제 할 데이터베이스를 마우스 오른쪽 단추로 클릭하고을 클릭 한 다음 Tasks을 클릭하십시오 Copy Database.... 마법사를 따르십시오.


답변

데이터베이스를 분리하고 명령 프롬프트에서 파일을 새 이름으로 복사 한 다음 두 DB를 모두 연결할 수 있습니다.

SQL에서 :

USE master;
GO
EXEC sp_detach_db
    @dbname = N'OriginalDB';
GO

명령 프롬프트에서 (이 예제를 위해 파일 경로를 단순화했습니다) :

copy c:\OriginalDB.mdf c:\NewDB.mdf
copy c:\OriginalDB.ldf c:\NewDB.ldf

SQL에서 다시 :

USE master;
GO
CREATE DATABASE OriginalDB
    ON (FILENAME = 'C:\OriginalDB.mdf'),
       (FILENAME = 'C:\OriginalDB.ldf')
    FOR ATTACH;
GO
CREATE DATABASE NewDB
    ON (FILENAME = 'C:\NewDB.mdf'),
       (FILENAME = 'C:\NewDB.ldf')
    FOR ATTACH;
GO

답변

백업에서 잘못 복원하려고 시도한 것으로 나타났습니다.

처음에 새 데이터베이스를 만든 다음 여기에서 백업을 복원하려고했습니다. 내가해야했던 것과 마지막에 일한 것은 복원 대화 상자를 열고 대상 필드에 새 데이터베이스의 이름을 입력하는 것이 었습니다.

즉, 백업에서 복원하면 트릭을 수행 할 수 있습니다.

모든 의견과 제안에 감사드립니다.


답변

이것은 내가 사용하는 스크립트입니다. 조금 까다 롭지 만 작동합니다. SQL Server 2012에서 테스트되었습니다.

DECLARE @backupPath nvarchar(400);
DECLARE @sourceDb nvarchar(50);
DECLARE @sourceDb_log nvarchar(50);
DECLARE @destDb nvarchar(50);
DECLARE @destMdf nvarchar(100);
DECLARE @destLdf nvarchar(100);
DECLARE @sqlServerDbFolder nvarchar(100);

SET @sourceDb = 'db1'
SET @sourceDb_log = @sourceDb + '_log'
SET @backupPath = 'E:\tmp\' + sourceDb + '.bak' --ATTENTION: file must already exist and SQL Server must have access to it
SET @sqlServerDbFolder = 'E:\DB SQL\MSSQL11.MSSQLSERVER\MSSQL\DATA\'
SET @destDb = 'db2'
SET @destMdf = @sqlServerDbFolder + @destDb + '.mdf'
SET @destLdf = @sqlServerDbFolder + @destDb + '_log' + '.ldf'

BACKUP DATABASE @sourceDb TO DISK = @backupPath

RESTORE DATABASE @destDb FROM DISK = @backupPath
WITH REPLACE,
   MOVE @sourceDb     TO @destMdf,
   MOVE @sourceDb_log TO @destLdf

답변

여기에 언급 된 솔루션 중 어느 것도 나를 위해 효과가 없었습니다. SQL Server Management Studio 2014를 사용하고 있습니다.

대신 “옵션”화면에서 “복원 전에 테일 로그 백업 수행”확인란의 선택을 해제해야했습니다. 내 버전에서는 기본적으로 선택되어 있으며 복원 작업이 완료되지 않습니다. 선택을 해제 한 후 복원 작업이 문제없이 진행되었습니다.


답변

MS SQL Server 2012를 사용하면 3 가지 기본 단계를 수행해야합니다.

  1. 먼저 .sql소스 DB의 구조 만 포함 하는 파일을 생성 하십시오.

    • 소스 DB를 마우스 오른쪽 버튼으로 클릭 한 다음 작업 , 스크립트 생성
    • 마법사를 따라 .sql파일을 로컬로 저장하십시오
  2. 둘째, 소스 DB를 .sql파일 의 대상 DB로 바꿉니다.

    • 대상 파일에 마우스 오른쪽 클릭, 선택 새 쿼리Ctrl-H(또는 편집찾기 및 바꾸기빠른 교체 )
  3. 마지막으로 데이터로 채 웁니다

    • 대상 DB를 마우스 오른쪽 버튼으로 클릭 한 다음 작업데이터 가져 오기 를 선택하십시오.
    • 데이터 소스 드롭 다운이 ” SQL 서버용 .net 프레임 워크 데이터 제공자 “로 설정되고 DATA ex 아래에 연결 문자열 텍스트 필드가 설정되었습니다.Data Source=Mehdi\SQLEXPRESS;Initial Catalog=db_test;User ID=sa;Password=sqlrpwrd15
    • 목적지와 동일하게
    • 전송하려는 테이블을 확인하거나 “source : …”외에 확인란을 선택하여 모두 확인하십시오.

끝났습니다.