데이터베이스 스크립트 개요
업데이트: 2007년 11월
데이터베이스 스크립트는 데이터베이스 스키마 정의의 일부가 아닌 T-SQL(Transact-SQL) 문이나 SQLCMD와 같은 유틸리티를 포함하는 추가 파일입니다. 데이터베이스 스크립트는 배포 단계의 일부(배포 전 및 배포 후 스크립트)로 사용되거나 데이터베이스 프로젝트에 저장하는 일반 관리 스크립트가 될 수 있습니다.
스키마 개체에서 데이터베이스 리팩터링 작업을 수행하는 동안 해당 작업의 일부로 이름을 바꾸는 데이터베이스 개체가 포함된 모든 스크립트를 자동으로 업데이트할 수 있습니다.
스크립트 폴더에서는 다음 작업이 지원됩니다.
새 항목 추가
폴더 추가
스크립트 추가
프로젝트에서 제외
버전 제어 작업(예: 체크 인, 체크 아웃 등)
잘라내기
복사
삭제
이름 바꾸기
속성
스크립트 폴더 내에 포함된 스크립트에서는 다음 작업이 지원됩니다.
열기
연결 프로그램
프로젝트에서 제외
버전 제어 작업(예: 체크 인, 체크 아웃 등)
잘라내기
복사
삭제
이름 바꾸기
속성
배포 스크립트
데이터베이스 프로젝트를 빌드할 경우 배포 전 스크립트, 데이터베이스 개체 정의 및 배포 후 스크립트가 하나의 빌드 스크립트에 병합됩니다. 하나의 배포 전 스크립트와 하나의 배포 후 스크립트만 지정할 수 있지만 배포 전 스크립트 및 배포 후 스크립트 내에서 다른 스크립트를 포함할 수 있습니다. 추가 스크립트는 SQLCMD를 사용하여 포함합니다. 이 항목의 뒷부분에 나오는 관련 단원을 참조하십시오. 데이터베이스 프로젝트를 빌드할 경우 포함된 모든 스크립트가 빌드 스크립트에 병합됩니다.
스크립트 파일의 빌드 작업 속성을 PreDeploy로 설정하여 배포 전 스크립트를 지정합니다. 마찬가지로 스크립트 파일의 빌드 작업 속성을 PostDeploy로 설정하여 배포 후 스크립트를 지정합니다. 스크립트를 배포 전 스크립트 또는 배포 후 스크립트로 지정하는 경우 이전에 해당 빌드 작업으로 지정한 다른 스크립트가 있으면 이 다른 스크립트의 빌드 작업이 빌드에 없음으로 자동 설정됩니다. 각 데이터베이스 프로젝트에는 배포 전 스크립트와 배포 후 스크립트가 하나씩만 있을 수 있으므로 이러한 동작은 의도된 것입니다.
데이터베이스 스키마를 가져올 때 대부분의 스키마 정보는 데이터베이스 프로젝트 내의 데이터베이스 개체 정의로 가져오게 됩니다. 그러나 일부 정보(예: 로그인, 사용 권한, 규칙 및 기본값)는 추가 배포 전 또는 배포 후 스크립트로 가져오게 됩니다. 이 작업이 발생할 경우 데이터베이스 프로젝트의 스크립트 폴더 내에 있는 배포 전 또는 배포 후 하위 폴더에 추가 파일이 만들어집니다. 이러한 추가 스크립트 파일은 배포 전 및 배포 후 스크립트에 적절하게 포함됩니다. 포함된 스크립트는 빌드에 직접 포함되지 않으므로 빌드 작업 속성이 빌드에 없음으로 설정됩니다. 대신에 배포 전 또는 배포 후 스크립트를 통해 간접적으로 포함됩니다. 인식되지 않는 모든 스크립트 문은 스크립트 폴더의 ScriptsIgnoredOnImport.sql 파일에 배치됩니다.
중요: |
---|
이름이나 특징이 나중에 변경되는 데이터베이스 개체를 배포 스크립트에서 참조할 경우 배포 스크립트를 수동으로 수정해야 하고 그렇지 않으면 배포에 실패할 수 있습니다. 예를 들어 테이블에 바인딩되는 규칙과 기본값이 있으면 테이블의 이름을 바꿀 경우 배포 스크립트가 업데이트되지 않으므로 스크립트를 수정하지 않으면 바인딩이 실패합니다. 이름 바꾸기 리팩터링을 사용하여 테이블 이름을 바꾸면 배포 스크립트가 리팩터링 작업의 일부로 업데이트됩니다. |
데이터베이스 스키마 및 배포 전 스크립트 가져오기
기본적으로 script.predeployment.sql 파일이 기본 배포 전 스크립트입니다. 데이터베이스 프로젝트를 만들 때 이 스크립트는 빈 파일로 자동으로 만들어집니다. 데이터베이스 스키마를 가져올 때 배포 전 스크립트와 동일한 폴더에 추가 스크립트가 자동으로 만들어질 수 있습니다. 추가 스크립트가 만들어진 경우 해당 스크립트를 포함하기 위해 script.predeployment.sql 파일에 문이 추가됩니다. 다른 파일의 빌드 작업 속성을 PreDeploy로 설정하여 이 파일을 배포 전 스크립트로 지정할 수 있습니다.
참고: |
---|
빌드 작업 속성이 PreDeploy로 설정된 배포 전 스크립트는 하나만 사용할 수 있습니다. 배포 전 단계에서 여러 스크립트를 사용하려면 SQLCMD :r.\FileName.sql 문을 사용하여 다른 배포 전 스크립트를 포함하는 최상위 수준의 배포 전 스크립트를 지정해야 합니다. |
중요: |
---|
스키마 가져오기 작업 중에 개체를 다시 만들기 위한 충분한 정보를 가져올 수 없는 경우에는 개체를 만드는 데 사용되는 배포 전 스크립트를 수동으로 수정해야 합니다. 예를 들어 스크립트를 수정하여 암호화 키 및 인증서를 만들어야 합니다. |
데이터베이스 스키마를 가져올 때 다음 표의 스크립트 파일이 생성됩니다.
파일 이름 |
포함 순서 |
설명 |
||
---|---|---|---|---|
Logins.sql |
첫 번째 |
이 스크립트에는 소스 데이터베이스에 정의된 모든 Microsoft SQL Server 로그인에 대한 정의가 포함되어 있습니다. 로그인은 Microsoft SQL Server 2005의 CREATE LOGIN과 SQL Server 2000의 sp_addlogin을 사용하여 스크립팅됩니다. |
||
LinkedServers.sql |
두 번째 |
이 스크립트에는 연결된 서버를 만드는 문이 포함되어 있습니다. 자세한 내용은 Microsoft 웹 사이트에서 "서버 연결"을 참조하십시오. 데이터베이스 스키마를 가져올 때 소스 데이터베이스의 각 연결된 서버에 대한 스크립트에 sp_addlinkedserver 문이 추가됩니다. |
||
CustomErrors.sql |
세 번째 |
이 스크립트에는 사용자 정의 오류 메시지가 포함되어 있습니다. 데이터베이스 스키마를 가져올 때 소스 데이터베이스에 정의된 각 사용자 지정 오류 메시지에 대한 스크립트에 sp_addmessage 문이 추가됩니다. |
||
EncryptionKeysAndCertificates.sql |
네 번째 |
이 스크립트에는 소스 데이터베이스의 각 CREATE SYMMETRIC KEY, CREATE ASYMMETRIC KEY, CREATE MASTER KEY 및 CREATE CERTIFICATE 문에 대한 자리 표시자가 포함되어 있습니다.
|
데이터베이스 스키마 및 배포 후 스크립트 가져오기
기본적으로 script.postdeployment.sql 파일이 기본 배포 후 스크립트입니다. 데이터베이스 프로젝트를 만들 때 이 스크립트는 빈 파일로 자동으로 만들어집니다. 데이터베이스 스키마를 가져올 때 추가 스크립트가 만들어질 수 있습니다. 추가 스크립트가 만들어진 경우 해당 스크립트를 포함하기 위해 script.postdeployment.sql 파일에 문이 추가됩니다. 다른 파일의 빌드 작업 속성을 PostDeploy로 설정하여 이 파일을 배포 후 스크립트로 지정할 수 있습니다.
참고: |
---|
빌드 작업 속성이 PostDeploy로 설정된 배포 후 스크립트는 하나만 사용할 수 있습니다. 배포 후 단계에서 여러 스크립트를 사용하려면 SQLCMD :r.\FileName.sql 문을 사용하여 다른 배포 후 스크립트를 포함하는 최상위 수준의 배포 후 스크립트를 만들어야 합니다. |
중요: |
---|
스키마 가져오기 작업 중에 개체를 다시 만들거나 수정하기 위한 충분한 정보를 가져올 수 없는 경우에는 개체를 만들거나 업데이트하는 데 사용되는 배포 후 스크립트를 수동으로 수정해야 합니다. 이러한 경우의 예로는 사용자를 역할에 연결하는 작업을 들 수 있습니다. |
데이터베이스 스키마를 가져올 때 다음 표의 스크립트 파일이 생성됩니다.
파일 이름 |
순서 |
설명 |
---|---|---|
Storage.sql |
첫 번째 |
이 스크립트에는 파일 및 파일 그룹과 같은 저장소 개체와 관련된 정의가 포함됩니다. |
Permissions.sql |
두 번째 |
이 스크립트에는 대상 데이터베이스에 대한 모든 GRANT, REVOKE 또는 DENY 권한이 포함되어 있습니다. 데이터베이스 스키마를 가져올 때 소스 데이터베이스에 지정된 모든 권한에 대해 Permissions.sql에 문이 추가됩니다. |
RoleMemberships.sql |
세 번째 |
이 스크립트에는 사용자를 역할과 연결하는 데 필요한 모든 sp_addrolemember 문이 포함되어 있습니다. |
RulesAndDefaults.sql |
네 번째 |
이 스크립트에는 대상 데이터베이스에 대한 규칙과 기본값을 정의하는 추가 문이 포함되어 있습니다. 데이터베이스 스키마를 가져올 때 규칙과 기본값을 열 또는 별칭 데이터 형식에 바인딩하고 데이터베이스에 있는 기존 SQL Server 데이터베이스 역할의 멤버로 보안 계정을 추가하기 위한 문이 RulesAndDefaults 스크립트에 추가됩니다. 이 스크립트에 추가되는 문은 다음 표를 참조하십시오. |
DatabaseObjectOptions.sql |
다섯 번째 |
이 스크립트에는 배포를 수행한 후에 데이터베이스 개체에 적용되는 옵션이 포함됩니다. |
Signatures.sql |
여섯 번째 |
이 스크립트에는 대상 데이터베이스에 대한 모든 서명 정의가 포함되어 있습니다. 데이터베이스 스키마를 가져올 때 소스 데이터베이스에 정의된 각 서명에 대해 Signatures.sql 스크립트에 추가 문이 추가됩니다. 참고 이 스크립트는 SQL Server 2005에서만 사용됩니다. |
다음 작업을 통해 규칙, 기본값 및 보안 계정이 추가됩니다.
작업 |
SQL Server 2005 |
SQL Server 2000 |
---|---|---|
규칙을 열 또는 별칭 데이터 형식에 바인딩 |
ALTER TABLETableNameADD CONSTRAINTConstraintNameCHECK |
sp_bindrule |
기본값을 열 또는 별칭 데이터 형식에 바인딩 |
ALTER TABLETableNameADD CONSTRAINTConstraintNameDEFAULT |
sp_binddefault |
기존 SQL Server 데이터베이스 역할의 멤버로 보안 계정 추가 |
sp_addrolemember |
sp_addrolemember |
추가 스크립트
배포 스크립트 외에도 일반 용도의 다른 스크립트를 데이터베이스 프로젝트에 추가할 수 있습니다. 이러한 추가 스크립트를 구성하는 데 도움이 되도록 데이터베이스 프로젝트의 스크립트 폴더에 하위 폴더를 추가할 수 있습니다. T-SQL 편집기에서 이러한 추가 스크립트를 열면 데이터베이스 서버에 연결하고 스크립트 전체 또는 일부를 실행할 수 있습니다. 예를 들어 실행하는 루틴 감사 스크립트가 있는 경우 이 방법을 사용하면 간편하게 각 스크립트를 연결된 데이터베이스와 함께 유지하고 데이터베이스 스키마와 동일한 버전 제어 시스템을 사용하여 관리할 수 있습니다. 이러한 스크립트의 빌드 작업 속성은 빌드에 없음으로 설정됩니다.