[sql-server] SQL Server 2008 Express의 동일한 서버에서 SQL Server 데이터베이스를 어떻게 복제 할 수 있습니까?
테스트 목적으로 ‘복사하고 이름을 바꾸려는’데이터베이스가 포함 된 MS SQL Server 2008 Express 시스템이 있지만이를 달성하는 간단한 방법을 모릅니다.
R2 버전의 SQL Server에는 데이터베이스 복사 마법사가 있지만 슬프게도 업그레이드 할 수 없습니다.
문제의 데이터베이스는 공연입니다. 새 데이터베이스에 복사하려는 데이터베이스의 백업을 복원하려고 시도했지만 운이 없습니다.
답변
-
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
-
Microsoft SQL Management Studio를 엽니 다 .
- 원본 데이터베이스를 .BAK 파일로 백업합니다 (db-> 작업-> 백업).
- 새 이름 (복제)으로 빈 데이터베이스를 만듭니다. 이 옵션은 선택 사항이므로 아래 설명에 유의하십시오.
- 데이터베이스를 복제하고 복원 대화 상자를 열려면 클릭하십시오 (이미지 참조)
- 장치를 선택하고 3 단계에서 백업 파일을 추가하십시오.
- 테스트 데이터베이스로 대상 변경
- 데이터베이스 파일의 위치를 변경하십시오. 원본과 달라야합니다. 텍스트 상자에 직접 입력하고 접미사를 추가하기 만하면됩니다. (참고 : 순서가 중요합니다. 확인란을 선택한 다음 파일 이름을 변경하십시오.)
- 교체 및 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 가지 기본 단계를 수행해야합니다.
-
먼저
.sql
소스 DB의 구조 만 포함 하는 파일을 생성 하십시오.- 소스 DB를 마우스 오른쪽 버튼으로 클릭 한 다음 작업 , 스크립트 생성
- 마법사를 따라
.sql
파일을 로컬로 저장하십시오
-
둘째, 소스 DB를
.sql
파일 의 대상 DB로 바꿉니다.- 대상 파일에 마우스 오른쪽 클릭, 선택 새 쿼리 및 Ctrl-H(또는 편집 – 찾기 및 바꾸기 – 빠른 교체 )
-
마지막으로 데이터로 채 웁니다
- 대상 DB를 마우스 오른쪽 버튼으로 클릭 한 다음 작업 및 데이터 가져 오기 를 선택하십시오.
- 데이터 소스 드롭 다운이 ” SQL 서버용 .net 프레임 워크 데이터 제공자 “로 설정되고 DATA ex 아래에 연결 문자열 텍스트 필드가 설정되었습니다.
Data Source=Mehdi\SQLEXPRESS;Initial Catalog=db_test;User ID=sa;Password=sqlrpwrd15
- 목적지와 동일하게
- 전송하려는 테이블을 확인하거나 “source : …”외에 확인란을 선택하여 모두 확인하십시오.
끝났습니다.