SELECT * INTO 생성될 테이블명 FROM 원본 테이블 명
예) SELECT * INTO target FROM source
단 ) 제약조건이나, Identity 정보는 복사되지 않는다.
MS-SQL 쿼리분석기에서 테이블구조만 복사
Select * into (만들고싶은 테이블) From (소스테이블) Where 0=1
MS-SQL 동일 테이블에서 특정 필드값만 변경해서 복사 하는 방법
INSERT INTO AA
(
필드1, 필드2, 필드3, 필드4, 필드5
)
SELECT
'2007', 필드2, 필드3, 필드4, 필드5
FROM AA
WHERE 필드1='2006'
서버에서 테이블 복사하는 법은?
간단하게
BACKUP DATABASE 디비명 TO DISK='경로' WITH INIT
restore database 디비명 from disk ='경로'
또 다른 방법이 있다면..
1. 테스트 서버에 접속한다.
select * from sysfiles 을 실행..
-> 물리적 파일 위치를 확인한다.
2. 테스트 서버의 기동을 정지시킨다.
3. 탐색기를 연후 1번에서 확인한 파일을 복사한다.(CTRL+C)
4. 원본 서버로 이동시킨다.(CTRL+V)
5. 원본 DB로 접속한다.
sp_attach_db [ @dbname = ] 'dbname' ,
[ @filename1 = ] 'filename_n' [ ,...16 ]
DB를 붙인다.
-> 예) 붙일 DB명이 pubs이고 파일이 아래와 같은때
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
6. use @dbname (해당 DB로 이동한다)
7. 데이터를 확인한다.
* 경로가 틀리면 에러가 납니다. 또는 객체의 소유자가 의도 하지 않았던 것으로
바뀔수 있는데 이는 다시 수정하주면 됩니다.
* 설정하신 인덱스, 사용자, 사용자 정의 함수, 사용자 정의 SP까지 모두 옮겨지게
됩니다.
서버에 있는 테이블을 다른 서버로 옮길 수 있나요?
작업방법은 3 가지 정도가 있을 수 있습니다.
1. 데이터베이스 백업 / 복원
집에 있는 데이터베이스를 백업 받으셨다가 다른 컴퓨터에서 복원하는 방법입니다.
백업방법과 복원방법은 필요하시면 추가 질문 부탁합니다.
2. 데이터베이스 분리/연결
집에 있는 데이터베이스를 잠간 분리했다가 파일을 복사하여 사본을 만들고, 그 사본을 다른 서버로 옮긴다음, 해당 서버에서 다시 연결하면 됩니다.
분리 및 복원방법은 필요하시면 추가 질문 부탁합니다.
3. 데이터 가져오기 및 내보내기
집에 있는 데이터베이스와 옮기고자 하는 서버에 네트워크로 동시에 연결이 가능한 경우라면, 데이터 가져오기 및 내보내기 데이터 가져오기 및 내보내기 유틸리티를 사용하여 데이터와 스키마를 옮길 수 있습니다.
mdf,ldf 파일을 직접 이동 하는 방법 (추천)
1) A 서버의 서비스를 내린다.
2) A 서버의 mdf, ldf 파일을 카피하여 B 서버로 이동 한다.
- 디폴트로 SQL 서버를 설치하셨다면 C:\Program Files\Microsoft SQL Server\MSSQL\Data 에 파일가 있을 것임
3) B 서버에서 쿼리 분석기를 실행한다.
4) sp_attach_db 를 이용하여 mdf,ldf 파일을 B 서버에 첨부한다
예) pubs 데이터베이스를 첨부하는 예재
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
sp_attach_db
서버에 데이터베이스를 첨부합니다.
구문
sp_attach_db [ @dbname = ] 'dbname' ,
[ @filename1 = ] 'filename_n' [ ,...16 ]
인수
[@dbname =] 'dbname'
서버에 첨부될 데이터베이스의 이름입니다. 이 이름은 고유해야 합니다. dbname은 sysname이며 기본값은 NULL입니다.
[@filename1 =] 'filename_n'
데이터베이스 파일 경로를 포함한 물리적 이름입니다. filename_n은 nvarchar(260)이며 기본값은 NULL입니다. 16개까지 파일 이름을 지정할 수 있습니다. 매개 변수 이름은 @filename1에서 시작하여 @filename16까지 증가합니다. 파일 이름 목록은 데이터베이스의 다른 파일을 지정하는 시스템 테이블이 들어 있는 주 파일을 적어도 하나 이상 포함해야 합니다. 또한 목록은 데이터베이스가 분리된 다음 이동된 모든 파일을 포함해야 합니다.
반환 코드 값
0(성공) 또는 1(실패)
결과 집합
없음
비고
명시적 sp_detach_db 작업을 사용하여 서버에서 이전에 분리된 데이터베이스만이 sp_attach_db를 사용할 수 있습니다.17개 이상의 파일을 지정해야 하는 경우에는 FOR ATTACH 절이 있는 CREATE DATABASE를 사용하십시오.
데이터베이스가 분리된 서버 외의 서버에 데이터베이스를 첨부한 경우 및 분리한 데이터베이스를 복제할 수 있는 경우, sp_removedbreplication을 실행하여 데이터베이스에서 복제본을 제거해야 합니다.
사용 권한
sysadmin 고정 서버 역할의 구성원만이 이 프로시저를 실행할 수 있습니다.
댓글