새 데이터베이스를 만듭니다.
작업 중인 특정 SQL 버전에 대한 구문, 인수, 설명, 사용 권한 및 예제에 대해 다음 탭 중 하나를 선택합니다.
제품 선택
다음 행에서 관심 있는 제품 이름을 선택하면 해당 제품의 정보만 표시됩니다.
* SQL 서버 *
SQL 서버
개요
SQL Server에서 이 문은 새 데이터베이스 및 사용되는 파일과 해당 파일 그룹을 만듭니다. 또한 데이터베이스 스냅샷을 만드는 데 사용하거나, 데이터베이스 파일을 첨부하여 다른 데이터베이스의 분리된 파일에서 데이터베이스를 만드는 데 사용할 수도 있습니다.
구문
데이터베이스 만들기
구문 표기 규칙에 대한 자세한 내용은 Transact-SQL 구문 표기 규칙을 참조하세요.
CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
[ PRIMARY ] <filespec> [ , ...n ]
[ , <filegroup> [ , ...n ] ]
[ LOG ON <filespec> [ , ...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [ , ...n ] ]
[ ; ]
<option> ::=
{
FILESTREAM ( <filestream_option> [ , ...n ] )
| DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
| DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
| NESTED_TRIGGERS = { OFF | ON }
| TRANSFORM_NOISE_WORDS = { OFF | ON }
| TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
| DB_CHAINING { OFF | ON }
| TRUSTWORTHY { OFF | ON }
| PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'path-to-directory-on-a-DAX-volume' )
| LEDGER = { ON | OFF }
}
<filestream_option> ::=
{
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
| DIRECTORY_NAME = 'directory_name'
}
<filespec> ::=
{
(
NAME = logical_file_name ,
FILENAME = { 'os_file_name' | 'filestream_path' }
[ , SIZE = size [ KB | MB | GB | TB ] ]
[ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
[ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}
<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]
<filespec> [ , ...n ]
}
데이터베이스 연결:
CREATE DATABASE database_name
ON <filespec> [ , ...n ]
FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
| ATTACH_REBUILD_LOG }
[ ; ]
<attach_database_option> ::=
{
<service_broker_option>
| RESTRICTED_USER
| FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}
<service_broker_option> ::=
{
ENABLE_BROKER
| NEW_BROKER
| ERROR_BROKER_CONVERSATIONS
}
데이터베이스 스냅샷 만들기:
CREATE DATABASE database_snapshot_name
ON
(
NAME = logical_file_name ,
FILENAME = 'os_file_name'
) [ , ...n ]
AS SNAPSHOT OF
[ ; ]
인수
database_name
새 데이터베이스의 이름입니다. 데이터베이스 이름은 SQL Server 인스턴스 내에서 고유해야 하고 식별자 규칙을 따라야 합니다.
로그 파일에 대해 논리적 이름을 지정하지 않는 한 database_name 최대 128자일 수 있습니다. 논리 로그 파일 이름을 지정하지 않으면 SQL Server는 database_name 접미사를 추가하여 로그에 대한 logical_file_name 및 os_file_name 생성합니다. 생성할 논리적 파일 이름이 128자를 넘지 않도록 database_name은 123자로 제한됩니다.
데이터 파일 이름을 지정하지 않으면 SQL Server는 database_name logical_file_name os_file_name 사용합니다. 기본 경로는 레지스트리에서 가져옵니다. 기본 경로는 Management Studio의 서버 속성(데이터베이스 설정 페이지)에서 변경할 수 있습니다. 기본 경로를 변경하려면 SQL Server를 다시 시작해야 합니다.
봉쇄 = { 없음 | 부분 }
적용 대상: SQL Server 2012(11.x) 이상 버전
데이터베이스의 포함 상태를 지정합니다.
-
NONE= 포함되지 않은 데이터베이스입니다. -
PARTIAL= 부분적으로 포함된 데이터베이스입니다.
켜기
데이터베이스의 데이터 섹션을 저장하는 데 사용하는 디스크 파일인 데이터 파일을 명시적으로 정의하도록 지정합니다.
ON 은 기본 파일 그룹에 대한 데이터 파일을 정의하는 항목의 <filespec> 쉼표로 구분된 목록 뒤에 있을 때 필요합니다. 주 파일 그룹의 파일 목록 뒤에는 사용자 파일 그룹과 해당 파일을 정의하는 쉼표로 구분된 선택적 항목 목록이 <filegroup> 올 수 있습니다.
본래의
연결된 <filespec> 목록이 주 파일을 정의하도록 지정합니다. 주 파일 그룹의 항목에 지정된 <filespec> 첫 번째 파일이 주 파일이 됩니다. 데이터베이스에는 주 파일이 하나만 있을 수 있습니다. 자세한 내용은 데이터베이스 파일 및 파일 그룹을 참조하세요.
지정하지 않으면 PRIMARY 문에 CREATE DATABASE 나열된 첫 번째 파일이 기본 파일이 됩니다.
로그온
데이터베이스 로그를 저장하는 데 사용하는 디스크 파일인 로그 파일을 명시적으로 정의하도록 지정합니다.
LOG ON 그 다음에는 로그 파일을 정의하는 쉼표로 구분된 항목 목록이 <filespec> 옵니다. 지정하지 않으면 LOG ON 하나의 로그 파일이 자동으로 생성되며, 크기는 데이터베이스에 대한 모든 데이터 파일의 크기 합계의 25%이거나 크기는 512KB입니다. 이 파일은 기본 로그 파일 위치에 저장됩니다. 이 위치에 대한 자세한 내용은 데이터 및 로그 파일의 기본 위치 보기 또는 변경을 참조하세요.
LOG ON 은 데이터베이스 스냅샷에 지정할 수 없습니다.
한 부씩 collation_name
데이터베이스의 기본 데이터 정렬을 지정합니다. 데이터 정렬 이름으로는 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름을 사용할 수 있습니다. 이 인수를 지정하지 않으면 데이터베이스에 SQL Server 인스턴스의 기본 데이터 정렬이 할당됩니다. 데이터 정렬 이름은 데이터베이스 스냅샷에 지정할 수 없습니다.
데이터 정렬 이름은 or FOR ATTACH 절로 FOR ATTACH_REBUILD_LOG 지정할 수 없습니다. 연결된 데이터베이스의 데이터 정렬을 변경하는 방법에 대한 자세한 내용은 데이터베이스 데이터 정렬 설정 또는 변경을 참조하십시오.
Windows 및 SQL 데이터 정렬 이름에 대한 자세한 내용은 COLLATE를 참조하세요.
참고
포함된 데이터베이스는 포함되지 않은 데이터베이스와 다른 방식으로 데이터가 정렬됩니다. 자세한 내용은 포함된 데이터베이스 데이터 정렬을 참조하세요.
WITH <옵션>
<filestream_option>
NON_TRANSACTED_ACCESS = { 꺼짐 | READ_ONLY | 전체 }
적용 대상: SQL Server 2012(11.x) 이상 버전
데이터베이스에 대한 비트랜잭션 FILESTREAM 액세스 수준을 지정합니다.
값 설명 OFF비트랜잭션 액세스는 사용할 수 없습니다. READONLY비트랜잭션 프로세스에서 이 데이터베이스의 FILESTREAM 데이터를 읽을 수 있습니다. FULLFILESTREAM FileTable에 대한 전체 비트랜잭션 액세스를 사용할 수 있습니다. DIRECTORY_NAME = <directory_name>
적용 대상: SQL Server 2012(11.x) 이상 버전
Windows 호환 디렉터리 이름입니다. 이 이름은 SQL Server 인스턴스의 모든 Database_Directory 이름 중에서 고유해야 합니다. 고유성을 비교할 때는 SQL Server 데이터 정렬 설정과 관계없이 대/소문자가 구분되지 않습니다. 데이터베이스에 FileTable을 만들기 전에 이 옵션을 설정해야 합니다.
다음 옵션은 로 설정된
CONTAINMENT경우에만PARTIAL허용됩니다. 설정CONTAINMENT되면NONE오류가 발생합니다.
DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <언어 이름> | <언어 별칭>
적용 대상: SQL Server 2012(11.x) 이상 버전
이 옵션에 대한 전체 설명 은 서버 구성: 기본 전체 텍스트 언어 를 참조하세요.
DEFAULT_LANGUAGE = <lcid> | <언어 이름> | <언어 별칭>
적용 대상: SQL Server 2012(11.x) 이상 버전
이 옵션에 대한 전체 설명은 서버 구성: 기본 언어 를 참조하세요.
NESTED_TRIGGERS = { OFF | ON}
적용 대상: SQL Server 2012(11.x) 이상 버전
이 옵션에 대한 전체 설명 은 서버 구성: 중첩 트리거 를 참조하세요.
TRANSFORM_NOISE_WORDS = { OFF | ON}
적용 대상: SQL Server 2012(11.x) 이상 버전
이 옵션에 대한 전체 설명은 서버 구성: 노이즈 단어 변환 을 참조하세요.
TWO_DIGIT_YEAR_CUTOFF = { 2049 | <1753년에서 9999> 년 사이의 모든 연도 }
연도를 나타내는 4자리 숫자입니다. 기본값은 2049입니다. 이 옵션에 대한 전체 설명 은 서버 구성: 두 자리 연도 구분 을 참조하세요.
DB_CHAINING { 꺼짐 | 켜기 }
ON 데이터베이스를 지정하면 데이터베이스 간 소유권 체인의 원본 또는 대상이 될 수 있습니다.
데이터베이스가 데이터베이스 간 소유권 체인에 참여할 수 없는 경우 OFF 기본값은 OFF입니다.
중요
SQL Server 인스턴스는 데이터베이스 간 소유권 체인 서버 옵션이 0(OFF)일 때 이 설정을 인식합니다. 데이터베이스 간 소유권 체인이 1인ON 경우 이 옵션의 값에 관계없이 모든 사용자 데이터베이스가 데이터베이스 간 소유권 체인에 참여할 수 있습니다. 이 옵션은 sp_configure를 사용하여 설정합니다.
이 옵션을 설정하려면 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다. 이러한 DB_CHAINING 시스템 데이터베이스에는 옵션을 설정할 수 없습니다. mastermodeltempdb
신뢰할 수 있는 { 끄기 | 켜기 }
ON 지정되면 가장 컨텍스트를 사용하는 데이터베이스 모듈(예: 뷰, 사용자 정의 함수 또는 저장 프로시저)이 데이터베이스 외부의 리소스에 액세스할 수 있습니다.
가장 컨텍스트의 데이터베이스 모듈이 데이터베이스 외부의 리소스에 액세스할 수 없는 경우 OFF 기본값은 OFF입니다.
TRUSTWORTHY 는 데이터베이스가 연결 될 OFF 때마다로 설정됩니다.
기본적으로 데이터베이스를 제외한 모든 시스템 데이터베이스는 msdb .로 설정됩니다 TRUSTWORTHYOFF. 및 model 데이터베이스에 대해 tempdb 값을 변경할 수 없습니다. 데이터베이스에 대한 TRUSTWORTHY 옵션을 ON 설정 master 하지 않는 것이 좋습니다.
PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'directory_name')
적용 대상: SQL Server 2017(14.x) 이상 버전
이 옵션을 지정하면 트랜잭션 로그 버퍼는 스토리지 클래스 메모리(NVDIMM-N 비휘발성 스토리지)로 지원되는 디스크 디바이스에 있는 볼륨에서 생성되며 영구적 로그 버퍼라고도 합니다. 자세한 내용은 스토리지 클래스 메모리 사용하여
장부 = { 온 | 꺼짐 }
ON으로 설정된 경우 모든 사용자 데이터의 무결성이 보호되는 원장 데이터베이스를 만듭니다. 원장 데이터베이스에는 원장 테이블만 만들 수 있습니다. 기본값은 OFF입니다. 데이터베이스를 LEDGER 만든 후에는 옵션 값을 변경할 수 없습니다. 자세한 내용은 원장 데이터베이스 구성을 참조하세요.
데이터베이스 생성 ... 붙이기 위해 [ <> attach_database_option ]
기존 운영 체제 파일 세트를 연결하여 데이터베이스를 만들도록 지정합니다. 기본 파일을 지정하는 항목이 있어야 합니다 <filespec> . 필요한 유일한 다른 <filespec> 항목은 데이터베이스를 처음 만들거나 마지막으로 연결할 때와 경로가 다른 파일에 대한 항목입니다.
<filespec> 이러한 파일에 대한 항목을 지정해야 합니다.
FOR ATTACH 필요:
- 모든 데이터 파일(MDF 및 NDF)을 사용할 수 있어야 합니다.
- 로그 파일이 여러 개 있는 경우 해당 파일을 모두 사용할 수 있어야 합니다.
읽기/쓰기 데이터베이스에 현재 사용할 수 없는 단일 로그 파일이 있고 작업 ATTACH 전에 FOR ATTACH 사용자 또는 열린 트랜잭션 없이 데이터베이스가 종료된 경우 자동으로 로그 파일을 다시 빌드하고 기본 파일을 업데이트합니다. 반면 읽기 전용 데이터베이스의 경우 기본 파일을 업데이트할 수 없으므로 로그를 다시 작성할 수 없습니다. 따라서 사용할 수 없는 로그를 사용하여 읽기 전용 데이터베이스를 연결하는 경우 로그 파일 또는 절의 파일을 FOR ATTACH 제공해야 합니다.
참고
최신 버전의 SQL Server에서 만든 데이터베이스는 이전 버전에서 연결할 수 없습니다.
SQL Server에서 연결 중인 데이터베이스의 일부인 모든 전체 텍스트 파일이 데이터베이스에 연결됩니다. 전체 텍스트 카탈로그의 새 경로를 지정하려면 전체 텍스트 운영 체제 파일 이름을 제외한 새 위치를 지정합니다. 자세한 내용은 예제참조하세요.
"디렉터리 이름"의 FILESTREAM 옵션이 포함된 데이터베이스를 연결하면 SQL Server에서 이름이 Database_Directory 고유한지 확인하라는 메시지가 표시됩니다. 그렇지 않으면 ATTACH 오류가 FILESTREAM Database_Directory name is not unique in this SQL Server instance발생하여 작업이 실패합니다. 이 오류를 방지하려면 선택적 매개 변수 directory_name이 이 작업에 전달되어야 합니다.
FOR ATTACH 은 데이터베이스 스냅샷에 지정할 수 없습니다.
FOR ATTACH 옵션을 지정할 RESTRICTED_USER 수 있습니다.
RESTRICTED_USER 에서는 db_owner 고정 데이터베이스 역할의 멤버와 dbcreator 및 sysadmin 고정 서버 역할만 데이터베이스에 연결할 수 있지만 해당 수는 제한되지 않습니다. 자격이 없는 사용자의 연결 시도는 거부됩니다.
<service_broker_option>
데이터베이스에서 Service Broker를 사용하는 경우 다음 절에 다음을 WITH <service_broker_option> 사용합니다.FOR ATTACH
데이터베이스에 대한 Service Broker 메시지 배달 및 Service Broker 식별자를 제어합니다. Service Broker 옵션은 절이 사용되는 경우에만 지정할 수 있습니다 FOR ATTACH .
브로커 활성화
지정된 데이터베이스에 대해 Service Broker를 사용할 수 있도록 지정합니다. 즉, 메시지 배달이 시작되고 is_broker_enabled 카탈로그 뷰에서 sys.databases가 True로 설정됩니다. 데이터베이스에는 기존 Service Broker 식별자가 유지됩니다.
NEW_BROKER
service_broker_guid 및 복원된 데이터베이스 모두에서 새 sys.databases 값을 만듭니다. 정리를 사용하여 모든 대화 엔드포인트를 종료합니다. 이때 Service Broker가 설정되지만 원격 대화 엔드포인트에 메시지가 전송되지 않습니다. 이전 Service Broker 식별자를 참조하는 경로는 새 식별자로 다시 만들어야 합니다.
ERROR_BROKER_CONVERSATIONS
데이터베이스가 연결 또는 복원되었다는 오류 메시지를 표시하고 모든 대화를 끝냅니다. Service Broker는 이 작업이 완료될 때까지 해제된 후 설정됩니다. 데이터베이스에는 기존 Service Broker 식별자가 유지됩니다.
분리되는 대신 복사된 복제된 데이터베이스를 연결하는 경우 다음을 고려합니다.
- 데이터베이스를 원래 데이터베이스와 동일한 서버 인스턴스 및 버전에 연결하는 경우에는 추가 작업이 필요하지 않습니다.
- 데이터베이스를 동일한 서버 인스턴스의 업그레이드된 버전에 연결하는 경우에는 연결 작업이 완료된 다음, sp_vupgrade_replication을 실행하여 복제를 업그레이드해야 합니다.
- 데이터베이스를 버전에 관계없이 다른 서버 인스턴스에 연결하는 경우에는 연결 작업이 완료된 다음, sp_removedbreplication을 실행하여 복제를 제거해야 합니다.
참고
연결은 vardecimal 스토리지 형식에서 작동하지만 SQL Server 데이터베이스 엔진을 최소 SQL Server 2005(9.x) SP2로 업그레이드해야 합니다. vardecimal 스토리지 형식을 사용하여 데이터베이스를 이전 버전의 SQL Server에 연결할 수 없습니다. vardecimal 스토리지 형식에 대한 자세한 내용은 데이터 압축을 참조하세요.
데이터베이스가 SQL Server의 새 인스턴스에 처음 연결되거나 복원되는 경우 서비스 마스터 키로 암호화된 데이터베이스 마스터 키의 복사본은 아직 서버에 저장되지 않습니다. 데이터베이스 마스터 키를 암호 해독하려면 OPEN MASTER KEY 문을 사용해야 합니다. DMK를 암호 해독한 후에는 ALTER MASTER KEY REGENERATE 문을 사용하여 SMK(서비스 마스터 키)로 암호화된 DMK의 복사본을 서버에 프로비전함으로써 앞으로 자동 암호 해독을 사용하도록 설정할 수 있습니다. 데이터베이스가 이전 버전에서 업그레이드되지 않은 경우에는 DMK를 다시 생성해야 최신 AES 알고리즘을 사용할 수 있습니다. DMK를 다시 생성하는 방법은 ALTER MASTER KEY를 참조하세요. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 데 소요되는 시간은 DMK에서 보호하는 개체 수에 따라 달라집니다. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 것은 한 번만 필요하며 키 회전 전략의 일부로 향후 다시 생성에는 영향을 주지 않습니다. 연결을 사용하여 데이터베이스를 업그레이드하는 방법에 대한 자세한 내용은 분리 및 연결을 사용하여 데이터베이스 업그레이드를 참조하세요.
중요
알 수 없거나 신뢰할 수 없는 원본의 데이터베이스를 연결하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용하기 전에 비프로덕션 서버의 데이터베이스에서 DBCC CHECKDB를 실행하여 데이터베이스에서 코드(예: 저장 프로시저 또는 다른 사용자 정의 코드)를 시험해 보세요.
참고
데이터베이스를 연결할 때는 TRUSTWORTHY 옵션과 DB_CHAINING 옵션이 적용되지 않습니다.
예를 ATTACH_REBUILD_LOG
기존 운영 체제 파일 집합을 연결하여 데이터베이스를 만들도록 지정합니다. 이 옵션은 읽기/쓰기 데이터베이스로 제한됩니다. 1차 파일을 지정하는 항목이 있어야 합니다 <filespec> . 하나 이상의 트랜잭션 로그 파일이 없으면 로그 파일이 다시 작성됩니다. ATTACH_REBUILD_LOG는 1MB의 새 로그 파일을 자동으로 만들어 이 파일은 기본 로그 파일 위치에 저장됩니다. 이 위치에 대한 자세한 내용은 데이터 및 로그 파일의 기본 위치 보기 또는 변경을 참조하세요.
참고
로그 파일이 있으면 데이터베이스 엔진이 로그 파일을 다시 작성하지 않고 해당 파일을 사용합니다.
FOR ATTACH_REBUILD_LOG 에는 다음 조건이 필요합니다.
- 데이터베이스가 완전하게 종료된 상태여야 합니다.
- 모든 데이터 파일(MDF 및 NDF)을 사용할 수 있어야 합니다.
중요
이 작업을 실행하면 로그 백업 체인이 끊어집니다. 작업이 완료된 직후 전체 데이터베이스 백업을 수행하는 것이 좋습니다. 자세한 내용은 BACKUP을 참조하세요.
FOR ATTACH_REBUILD_LOG 일반적으로 큰 로그가 있는 읽기/쓰기 데이터베이스를 복사본이 주로 또는 읽기 작업에만 사용되므로 원래 데이터베이스보다 적은 로그 공간이 필요한 다른 서버로 복사할 때 사용됩니다.
FOR ATTACH_REBUILD_LOG 은 데이터베이스 스냅샷에 지정할 수 없습니다.
데이터베이스 연결 및 분리에 대한 자세한 내용은 데이터베이스 분리 및 연결(SQL Server)을 참조하세요.
<파일스펙>
파일 속성을 제어합니다.
이름 logical_file_name
파일의 논리적 이름을 지정합니다.
NAME 는 절 중 하나를 지정하는 경우를 제외하고 지정된 경우 FILENAME 필수입니다 FOR ATTACH .
FILESTREAM 파일 그룹의 이름을 지정할 PRIMARY수 없습니다.
logical_file_name
파일을 참조할 때 SQL Server에서 사용되는 논리적 이름입니다. Logical_file_name은 데이터베이스에서 고유해야 하며 식별자에 대한 규칙을 따라야 합니다. 이 이름은 문자 상수, 유니코드 상수, 일반 식별자 또는 구분 식별자가 될 수 있습니다.
파일 이름 { 'os_file_name' | 'filestream_path' }
운영 체제(물리적) 파일 이름을 지정합니다.
os_file_name
파일을 만들 때 운영 체제에서 사용하는 경로 및 파일 이름입니다. 파일은 SQL Server가 설치된 로컬 서버, SAN(스토리지 영역 네트워크) 또는 iSCSI 기반 네트워크 중 하나의 디바이스에 있어야 합니다. 문을 실행하기 전에 지정된 경로가
CREATE DATABASE있어야 합니다. 자세한 내용은 이 문서의 후반부에 있는 데이터베이스 파일 및 파일 그룹을 참조하세요.SIZE,MAXSIZE및FILEGROWTH매개 변수는 파일에 대해 UNC 경로가 지정된 경우 설정할 수 있습니다.파일이 원시 파티션에 있는 경우 os_file_name은 기존 원시 파티션의 드라이브 문자만 지정해야 합니다. 각 원시 파티션에는 데이터 파일을 하나만 만들 수 있습니다.
참고
원시 파티션은 SQL Server 2014(12.x) 이상 버전에서 지원되지 않습니다.
파일이 읽기 전용 보조 파일이거나 데이터베이스가 읽기 전용이 아니면 압축된 파일 시스템에 데이터 파일을 배치해서는 안 됩니다. 또한 로그 파일을 압축 파일 시스템에 저장하면 안 됩니다.
filestream_path
FILESTREAM 파일 그룹의
FILENAME경우 FILESTREAM 데이터가 저장되는 경로를 참조합니다. 따라서 마지막 폴더 바로 위의 경로까지 있어야 하고 마지막 폴더 자체는 있으면 안 됩니다. 예를 들어 경로를C:\MyFiles\MyFilestreamDataC:\MyFiles지정하는 경우 실행ALTER DATABASE하기 전에 존재해야 하지만 폴더가MyFilestreamData없어야 합니다.파일 그룹과 파일(
<filespec>)은 같은 문으로 만들어야 합니다.및
SIZE속성은FILEGROWTHFILESTREAM 파일 그룹에 적용되지 않습니다.
SIZE 사이즈
파일의 크기를 지정합니다.
SIZE 는 os_file_name UNC 경로로 지정될 때 지정할 수 없습니다.
SIZE 는 FILESTREAM 파일 그룹에 적용되지 않습니다.
크기
파일의 초기 크기입니다.
기본 파일에 대한 크기 가 제공되지 않으면 데이터베이스 엔진은 데이터베이스에 있는
model주 파일의 크기를 사용합니다.model데이터베이스의 기본 크기는 8MB(SQL Server 2016(13.x)부터) 또는 1MB(이전 버전)입니다. 보조 데이터 파일 또는 로그 파일이 지정되었지만 파일 크기 가 지정되지 않은 경우 데이터베이스 엔진은 파일을 8MB(SQL Server 2016(13.x)부터 시작) 또는 1MB(이전 버전의 경우)로 만듭니다. 주 파일에 지정된 크기는 최소한model데이터베이스의 주 파일 크기와 같아야 합니다.KB(킬로바이트), MB(메가바이트), GB(기가바이트) 또는 TB(테라바이트) 접미사를 사용할 수 있습니다. 기본값은 MB입니다. 정수를 지정합니다. 10진수를 포함하지 마세요. 크기 는 정수 값입니다. 2,147,483,647보다 큰 값의 경우 더 큰 단위를 사용합니다.
맥스사이즈 max_size
파일이 증가할 수 있는 최대 크기를 지정합니다.
MAXSIZE 는 os_file_name UNC 경로로 지정될 때 지정할 수 없습니다.
max_size
최대 파일 크기입니다. KB, MB, GB 및 TB 접미사를 사용할 수 있습니다. 기본값은 MB입니다. 정수를 지정합니다. 10진수를 포함하지 마세요. max_size 지정하지 않으면 디스크가 가득 찼을 때까지 파일이 증가합니다. Max_size는 정수 값입니다. 2147483647보다 큰 값에는 더 큰 단위를 사용합니다.
무제한
디스크가 가득 찼을 때까지 파일이 커지게 지정합니다. SQL Server에서 무제한 증가로 지정된 로그 파일의 최대 크기는 2TB이고 데이터 파일의 최대 크기는 16TB입니다.
참고
FILESTREAM 컨테이너에 대해 이 옵션을 지정하는 경우 최대 크기는 없습니다. 디스크가 꽉 찰 때까지 파일이 증가합니다.
파일 성장 growth_increment
파일의 자동 증분을 지정합니다. 파일의 설정은 설정을 FILEGROWTH 초과 MAXSIZE 할 수 없습니다.
FILEGROWTH 는 os_file_name UNC 경로로 지정될 때 지정할 수 없습니다.
FILEGROWTH 는 FILESTREAM 파일 그룹에 적용되지 않습니다.
growth_increment
새 공간이 필요할 때마다 파일에 추가되는 공간의 양입니다.
값은 , ,
KBMBGB또는 백분율(TB)에서%지정할 수 있습니다. 숫자가 , 또는 접미사 없이KB지정된 경우 기본값은 .입니다MB.%MB지정된 경우%증가 크기는 증분이 발생할 때 파일 크기의 지정된 백분율입니다. 지정한 크기는 64KB 단위로 반올림되며 최소 값은 64KB입니다.값이 0이면 자동 증가가 해제되어 있고 추가 공간이 허용되지 않음을 나타냅니다.
FILEGROWTH지정하지 않으면 기본값은 다음과 같습니다.버전 기본값 SQL Server 2016(13.x)부터 데이터는 64MB입니다. 로그 파일은 64MB입니다. SQL Server 2005(9.x)부터 데이터는 1MB입니다. 로그 파일은 10%입니다. SQL Server 2005(9.x) 이전 데이터는 10%입니다. 로그 파일은 10%입니다.
<파일 그룹>
파일 그룹 속성을 제어합니다. 데이터베이스 스냅샷에는 파일 그룹을 지정할 수 없습니다.
파일 그룹 filegroup_name
파일 그룹의 논리적 이름입니다.
filegroup_name
filegroup_name 데이터베이스에서 고유해야 하며 시스템에서 제공하는 이름과
PRIMARYPRIMARY_LOG이름이 될 수 없습니다. 이 이름은 문자 상수, 유니코드 상수, 일반 식별자 또는 구분 식별자가 될 수 있습니다. 이 이름은 식별자에 대한 규칙을 따라야 합니다.FILESTREAM 포함
파일 그룹이 FILESTREAM BLOB(Binary Large Objects)을 파일 시스템에 저장되도록 지정합니다.
기본값
명명한 파일 그룹이 데이터베이스의 기본 파일 그룹임을 지정합니다.
MEMORY_OPTIMIZED_DATA 포함
적용 대상: SQL Server 2014(12.x) 이상
파일 그룹이 memory_optimized 데이터를 파일 시스템에 저장하도록 지정합니다. 자세한 내용은 In-Memory OLTP 개요 및 사용 시나리오를 참조하세요. 데이터베이스당 하나의
MEMORY_OPTIMIZED_DATA파일 그룹만 허용됩니다. 메모리 최적화 데이터를 저장하기 위해 파일 그룹을 만드는 코드 샘플은 메모리 최적화 테이블 및 고유하게 컴파일된 저장 프로시저 만들기를 참조하세요.
database_snapshot_name
새 데이터베이스 스냅샷의 이름입니다. 데이터베이스 스냅샷 이름은 SQL Server 인스턴스 내에서 고유해야 하며 식별자에 대한 규칙을 따라야 합니다. database_snapshot_name은 최대 128자까지 가능합니다.
ON ( NAME = logical_file_name, 파일명 = 'os_file_name') [ ,... n ]
데이터베이스 스냅샷을 만들기 위해 원본 데이터베이스의 파일 목록을 지정합니다. 스냅샷이 동작하려면 모든 데이터 파일을 개별적으로 지정해야 합니다. 그러나 로그 파일은 데이터베이스 스냅샷에 대해 허용되지 않습니다. FILESTREAM 파일 그룹은 데이터베이스 스냅샷에서 지원되지 않습니다. FILESTREAM 데이터 파일이 절에 CREATE DATABASE ON 포함된 경우 문이 실패하고 오류가 발생합니다.
해당 값 및 NAME 해당 값에 FILENAME 대한 설명은 해당 <filespec> 값에 대한 설명을 참조하세요.
참고
데이터베이스 스냅샷을 만들 때 다른 <filespec> 옵션과 키워드 PRIMARY 는 허용되지 않습니다.
source_database_name의 스냅샷으로
만들고 있는 데이터베이스가 source_database_name에 지정된 원본 데이터베이스의 데이터베이스 스냅샷임을 지정합니다. 스냅샷 및 원본 데이터베이스는 같은 인스턴스에 있어야 합니다.
SQL Server 2017(14.x) 및 이전 버전에서는 데이터베이스 스냅샷의 원본 데이터베이스에 파일 그룹을 포함 MEMORY_OPTIMIZED_DATA 할 수 없습니다. 메모리 내 데이터베이스 스냅샷에 대한 지원이 SQL Server 2019(15.x)에 추가되었습니다.
자세한 내용은 데이터베이스 스냅샷을 참조하세요.
설명
사용자 데이터베이스를 생성, 수정 또는 삭제할 때마다 마스터 데이터베이스를 백업해야 합니다.
문은 CREATE DATABASE 자동 커밋 모드(기본 트랜잭션 관리 모드)에서 실행되어야 하며 명시적 또는 암시적 트랜잭션에서는 허용되지 않습니다.
CREATE DATABASE 문 하나를 사용하여 데이터베이스 및 해당 데이터베이스를 저장하는 파일을 만들 수 있습니다. SQL Server는 다음 단계를 사용하여 문을 구현합니다 CREATE DATABASE .
- SQL Server에서 model 데이터베이스의 복사본을 사용하여 데이터베이스 및 해당 메타데이터를 초기화합니다.
- 데이터베이스에 Service Broker GUID가 할당됩니다.
- 데이터베이스 엔진에서 데이터베이스 내의 공간 사용 방법을 기록하는 내부 데이터가 포함된 페이지를 제외하고 데이터베이스의 나머지 부분을 빈 페이지로 채웁니다.
하나의 SQL Server인스턴스당 최대 32,767개의 데이터베이스를 지정할 수 있습니다.
각 데이터베이스에는 해당 데이터베이스에서 특수한 작업을 수행할 수 있는 소유자가 있습니다. 소유자는 데이터베이스를 만든 사용자입니다. ALTER AUTHORIZATION를 사용하여 데이터베이스 소유자를 변경할 수 있습니다.
일부 데이터베이스 기능은 파일 시스템의 기능이 있어야 데이터베이스의 모든 기능을 사용할 수 있습니다. 파일 시스템 기능 집합이 필요한 일부 기능의 예를 들면 다음과 같습니다.
DBCC CHECKDB- 파일 스트림 (FileStream)
- VSS 및 파일 스냅샷을 이용한 온라인 백업
- 데이터베이스 스냅샷 생성
- 메모리 최적화 데이터 파일 그룹
데이터베이스 파일 및 파일 그룹
모든 데이터베이스에는 주 파일과 트랜잭션 로그 파일이라는 2개의 파일과 하나 이상의 파일 그룹이 있습니다. 각 데이터베이스에 최대 32,767개의 파일과 32,767개의 파일 그룹을 지정할 수 있습니다.
데이터베이스를 만들 때는 데이터베이스에서 예상되는 최대 데이터 크기를 고려하여 데이터 파일을 가능한 한 크게 만드는 것이 좋습니다.
SQL Server의 성능과 안정성을 최적화하는 구성을 위해 SAN(스토리지 영역 네트워크), iSCSI 기반 네트워크 또는 로컬로 연결된 디스크에 SQL Server 데이터베이스 파일을 스토리지하는 것이 좋습니다.
데이터베이스 스냅샷
CREATE DATABASE 문을 사용하여 원본 데이터베이스의 읽기 전용 정적 뷰인 데이터베이스 스냅샷을 만들 수 있습니다. 데이터베이스 스냅샷은 스냅샷을 만들었을 당시의 원본 데이터베이스와 트랜잭션 측면에서 일관성을 가집니다. 원본 데이터베이스 하나에 스냅샷이 여러 개 있을 수 있습니다.
참고
데이터베이스 스냅샷을 만들 때 문은 CREATE DATABASE 로그 파일, 오프라인 파일, 파일 복원 및 소멸된 파일을 참조할 수 없습니다.
데이터베이스 스냅샷 만들기에 실패한 경우 해당 스냅샷은 주의 대상이 되며 삭제해야 합니다. 자세한 내용은 DROP DATABASE를 참조하세요.
각 스냅샷은 .를 사용하여 DROP DATABASE삭제될 때까지 유지됩니다.
자세한 내용은 데이터베이스 스냅샷(SQL Server) 및 데이터베이스 스냅샷 만들기를 참조하세요.
데이터베이스 옵션
데이터베이스를 만들 때마다 몇 가지 데이터베이스 옵션이 자동으로 설정됩니다. 이러한 옵션 목록은 ALTER DATABASE SET 옵션을 참조하세요.
모델 데이터베이스 및 새 데이터베이스 만들기
model 데이터베이스에 있는 모든 사용자 정의 개체는 새로 만든 데이터베이스에 복사됩니다. 테이블, 뷰, 저장 프로시저, 데이터 형식 등의 모든 개체를 model 데이터베이스에 추가하여 새로 만든 모든 데이터베이스에 포함할 수 있습니다.
크기 매개 변수를 추가하지 않고 CREATE DATABASE <database_name> 문을 지정하면 model 데이터베이스의 주 파일과 크기가 같은 주 데이터 파일이 만들어집니다.
FOR ATTACH를 지정하지 않은 경우 모든 새 데이터베이스는 model 데이터베이스에서 데이터베이스 옵션 설정을 상속합니다. 예를 들어 자동 축소와 같은 데이터베이스 옵션은 데이터베이스와 새로 만드는 모든 데이터베이스에서 model로 설정됩니다.
model 데이터베이스에서 옵션을 변경하면 새로 만드는 모든 데이터베이스에 이러한 새 옵션 설정이 사용됩니다. 데이터베이스에서 model 작업을 변경해도 기존 데이터베이스에는 영향을 주지 않습니다. FOR ATTACH가 문에 CREATE DATABASE 지정된 경우 새 데이터베이스는 원래 데이터베이스의 데이터베이스 옵션 설정을 상속합니다.
데이터베이스 정보 보기
카탈로그 뷰, 시스템 함수 및 시스템 저장 프로시저를 사용하여 데이터베이스, 파일 및 파일 그룹에 대한 정보를 반환할 수 있습니다. 자세한 내용은 시스템 보기를 참조하세요.
사용 권한
CREATE DATABASE, CREATE ANY DATABASE 또는 ALTER ANY DATABASE 권한이 필요합니다.
SQL Server 인스턴스에서 디스크 사용을 제어하기 위해 데이터베이스를 만들 수 있는 권한은 일반적으로 몇 개의 로그인으로 제한됩니다.
다음 예제에서는 데이터베이스 사용자에게 Fay데이터베이스를 만들 수 있는 권한을 제공합니다.
USE master;
GO
GRANT CREATE DATABASE TO [Fay];
GO
데이터 및 로그 파일에 대한 권한
SQL Server에서는 각 데이터베이스의 데이터 및 로그 파일에 특정 사용 권한이 설정됩니다. 데이터베이스에 다음 작업이 적용될 때마다 다음과 같은 사용 권한이 설정됩니다.
- 연결
- 백업
- 생성일
- 분리
- 새 파일을 추가하기 위해 수정됨
- 복원
이러한 사용 권한을 설정하면 누구나 액세스할 수 있는 디렉터리에 있는 파일이 실수로 변경되는 것을 방지할 수 있습니다.
참고
Microsoft SQL Server 2005 Express Edition은 데이터 및 로그 파일 권한을 설정하지 않습니다.
예제
A. 파일을 지정하지 않고 데이터베이스 만들기
다음 예에서는 mytest 데이터베이스를 만들고 해당 주 파일 및 트랜잭션 로그 파일을 만듭니다. 문에는 항목이 없으므로 <filespec> 주 데이터베이스 파일은 데이터베이스 주 파일의 크기입니다 model . 트랜잭션 로그는 512KB와 주 데이터 파일 크기의 25% 중 더 큰 값으로 설정됩니다. 지정되지 않았으므로 MAXSIZE 파일이 증가하여 사용 가능한 모든 디스크 공간을 채울 수 있습니다. 이 예에서는 mytest 데이터베이스를 만들기 전에 mytest라는 데이터베이스(있는 경우)를 삭제하는 방법도 보여 줍니다.
USE master;
GO
IF DB_ID(N'mytest') IS NOT NULL
DROP DATABASE mytest;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name,
size,
size * 1.0 / 128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO
B. 데이터 파일 및 트랜잭션 로그 파일을 지정하는 데이터베이스 만들기
다음 예에서는 Sales 데이터베이스를 만듭니다. 키워드 PRIMARY 가 사용되지 않으므로 첫 번째 파일(Sales_dat)이 기본 파일이 됩니다. 파일에 대한 SIZE 매개 변수에는 Sales_dat MB 또는 KB가 지정되지 않으므로 MB 또는 KB가 사용 MB 되며 MB 단위로 할당됩니다. 사용자 데이터베이스를 생성, 수정 또는 삭제할 때마다 Sales_log 파일은 MB 매개 변수에 명시적으로 SIZE 접미사를 지정했으므로 메가바이트(MB)로 공간이 할당됩니다.
USE master;
GO
CREATE DATABASE Sales
ON (
NAME = Sales_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON (
NAME = Sales_log,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
SIZE = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
GO
C. 데이터 파일 및 트랜잭션 로그 파일을 여러 개 지정하여 데이터베이스 만들기
다음 예에서는 3개의 Archive 데이터 파일과 2개의 100-MB 트랜잭션 로그 파일을 가진 100-MB 데이터베이스를 만듭니다. 주 파일은 목록의 첫 번째 파일이며 PRIMARY 키워드로 명시적으로 지정되어 있습니다. 트랜잭션 로그 파일은 LOG ON 키워드 다음에 지정됩니다.
FILENAME 옵션에서 파일에 사용된 확장명에 유의하십시오. 주 데이터 파일에는 .mdf, 보조 데이터 파일에는 .ndf, 트랜잭션 로그 파일에는 .ldf가 각각 사용됩니다. 이 예에서는 데이터베이스를 D: 데이터베이스와 함께 배치하는 대신 master 드라이브에 배치합니다.
USE master;
GO
CREATE DATABASE Archive
ON PRIMARY
(
NAME = Arch1,
FILENAME = 'D:\SalesData\archdat1.mdf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100 MB, MAXSIZE = 200,
FILEGROWTH = 20
)
LOG ON (
NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
), (
NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100 MB,
MAXSIZE = 200,
FILEGROWTH = 20
);
GO
D. 파일 그룹이 있는 데이터베이스 만들기
다음 예에서는 아래에 나열된 파일 그룹을 포함하는 Sales 데이터베이스를 만듭니다.
-
Spri1_dat및Spri2_dat파일을 포함하는 주 파일 그룹. 이러한 파일의 증분은FILEGROWTH.로15%지정됩니다. -
SalesGroup1및SGrp1Fi1파일을 포함하는SGrp1Fi2파일 그룹 -
SalesGroup2및SGrp2Fi1파일을 포함하는SGrp2Fi2파일 그룹
이 예에서는 성능을 향상시키기 위해 데이터 파일과 로그 파일을 서로 다른 디스크에 배치합니다.
USE master;
GO
CREATE DATABASE Sales
ON PRIMARY(
NAME = SPri1_dat,
FILENAME = 'D:\SalesData\SPri1dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15 %
), (
NAME = SPri2_dat,
FILENAME = 'D:\SalesData\SPri2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 15 %
),
FILEGROUP SalesGroup1(
NAME = SGrp1Fi1_dat,
FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
), (
NAME = SGrp1Fi2_dat,
FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
),
FILEGROUP SalesGroup2(
NAME = SGrp2Fi1_dat,
FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
), (
NAME = SGrp2Fi2_dat,
FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5
)
LOG ON (
NAME = Sales_log,
FILENAME = 'E:\SalesLog\salelog.ldf',
SIZE = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);
GO
E. 데이터베이스 연결
다음 예에서는 예 4에서 만든 Archive 데이터베이스를 분리한 다음, FOR ATTACH 절을 사용하여 데이터베이스를 연결합니다.
Archive는 데이터 파일과 로그 파일을 여러 개 포함하도록 정의되었습니다. 그러나 파일의 위치가 만들어진 이후로 변경되지 않았기 때문에 주 파일만 절에 FOR ATTACH 지정해야 합니다. SQL Server 2005(9.x)부터는 연결되는 데이터베이스의 일부인 모든 전체 텍스트 파일이 데이터베이스와 연결됩니다.
USE master;
GO
EXECUTE sp_detach_db Archive;
GO
CREATE DATABASE Archive
ON
(FILENAME = 'D:\SalesData\archdat1.mdf') FOR ATTACH;
GO
F. 데이터베이스 스냅샷 만들기
다음 예에서는 sales_snapshot0600 데이터베이스 스냅샷을 만듭니다. 데이터베이스 스냅샷은 읽기 전용이므로 로그 파일을 지정할 수 없습니다. 구문에 따라 원본 데이터베이스의 모든 파일이 지정되고 파일 그룹이 지정되지 않습니다.
이 예의 원본 데이터베이스는 예 4에서 만든 Sales 데이터베이스입니다.
USE master;
GO
CREATE DATABASE sales_snapshot0600
ON
(NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'),
(NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'),
(NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'),
(NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'),
(NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'),
(NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')
AS SNAPSHOT OF Sales;
GO
G. 데이터베이스 만들기 및 데이터 정렬 이름과 옵션 지정
다음 예에서는 MyOptionsTest 데이터베이스를 만듭니다. 데이터 정렬 이름을 지정하고 TRUSTYWORTHY 및 DB_CHAINING 옵션을 ON으로 설정합니다.
USE master;
GO
IF DB_ID(N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest COLLATE French_CI_AI
WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO
--Verifying collation and option settings.
SELECT name,
collation_name,
is_trustworthy_on,
is_db_chaining_on
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO
H. 이동된 전체 텍스트 카탈로그 연결
다음 예에서는 AdvWksFtCat 전체 텍스트 카탈로그를 AdventureWorks2025 데이터 및 로그 파일과 연결합니다. 이 예에서는 전체 텍스트 카탈로그를 기본 위치에서 새 위치 c:\myFTCatalogs로 이동하고 데이터 및 로그 파일은 기본 위치에 그대로 남아 있습니다.
USE master;
GO
--Detach the AdventureWorks2022 database
EXECUTE sp_detach_db AdventureWorks2022;
GO
-- Physically move the full text catalog to the new ___location.
--Attach the AdventureWorks2022 database and specify the new ___location of the full-text catalog.
CREATE DATABASE AdventureWorks2022 ON
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_data.mdf'),
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf'),
(FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO
9\. 행 파일 그룹 하나와 FILESTREAM 파일 그룹 두 개를 지정하는 데이터베이스 만들기
다음 예에서는 FileStreamDB 데이터베이스를 만듭니다. 이 데이터베이스에는 행 파일 그룹 하나와 FILESTREAM 파일 그룹 두 개가 있습니다. 각 파일 그룹에는 다음과 같이 하나의 파일이 포함됩니다.
FileStreamDB_data는 행 데이터를 포함합니다. 여기에는 기본 경로가 지정된FileStreamDB_data.mdf파일 하나가 포함됩니다.FileStreamPhotos는 FILESTREAM 데이터를 포함합니다. 여기에는 두 개의 FILESTREAM 데이터 컨테이너가 포함됩니다. 하나는FSPhotos에 있는C:\MyFSfolder\Photos이고 다른 하나는FSPhotos2에 있는D:\MyFSfolder\Photos입니다. 기본 FILESTREAM 파일 그룹으로 표시됩니다.FileStreamResumes는 FILESTREAM 데이터를 포함합니다. 여기에는FSResumes에 있는 FILESTREAM 데이터 컨테이너C:\MyFSfolder\Resumes가 포함됩니다.
USE master;
GO
-- Get the SQL Server data path.
DECLARE @data_path AS NVARCHAR (256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1
AND file_id = 1);
-- Execute the CREATE DATABASE statement.
EXECUTE ('CREATE DATABASE FileStreamDB
ON PRIMARY (
NAME = FileStreamDB_data,
FILENAME = ''' + @data_path + ' FileStreamDB_data.mdf '',
SIZE = 10 MB,
MAXSIZE = 50 MB,
FILEGROWTH = 15 %
),
FILEGROUP FileStreamPhotos
CONTAINS FILESTREAM DEFAULT (NAME = FSPhotos, FILENAME = ''C:\MyFSfolder\Photos'',
-- SIZE and FILEGROWTH should not be specified here.
-- If they are specified, an error is raised.
MAXSIZE = 5000 MB),
(NAME = FSPhotos2, FILENAME = ''D:\MyFSfolder\Photos'', MAXSIZE = 10000 MB),
FILEGROUP FileStreamResumes
CONTAINS FILESTREAM (NAME = FileStreamResumes, FILENAME = ''C:\MyFSfolder\Resumes'')
LOG ON (
NAME = FileStream_log,
FILENAME = ''' + @data_path + ' FileStreamDB_log.ldf '',
SIZE = 5 MB,
MAXSIZE = 25 MB,
FILEGROWTH = 5 MB
);');
GO
J. 여러 파일이 포함된 FILESTREAM 파일 그룹이 있는 데이터베이스 만들기
다음 예에서는 BlobStore1 데이터베이스를 만듭니다. 이 데이터베이스에는 행 파일 그룹 하나와 FILESTREAM 파일 그룹 하나(FS)가 있습니다. FILESTREAM 파일 그룹에는 두 개의 파일(FS1 및 FS2)이 포함됩니다. 그런 다음 세 번째 파일(FS3)을 FILESTREAM 파일 그룹에 추가하여 데이터베이스를 변경합니다.
USE master;
GO
CREATE DATABASE [BlobStore1] CONTAINMENT = NONE
ON PRIMARY(
NAME = N'BlobStore1',
FILENAME = N'C:\BlobStore\BlobStore1.mdf',
SIZE = 100 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1 MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(NAME = N'FS1', FILENAME = N'C:\BlobStore\FS1', MAXSIZE = UNLIMITED),
(NAME = N'FS2', FILENAME = N'C:\BlobStore\FS2', MAXSIZE = 100 MB)
LOG ON (
NAME = N'BlobStore1_log',
FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
SIZE = 100 MB,
MAXSIZE = 1 GB,
FILEGROWTH = 1 MB
);
GO
ALTER DATABASE [BlobStore1]
ADD FILE (
NAME = N'FS3',
FILENAME = N'C:\BlobStore\FS3',
MAXSIZE = 100 MB
) TO FILEGROUP [FS];
GO
관련 콘텐츠
* SQL 데이터베이스 *
SQL 데이터베이스
개요
Azure SQL Database에서 이 문은 Azure SQL Server와 함께 사용하여 단일 데이터베이스 또는 탄력적 풀의 데이터베이스를 만들 수 있습니다. 이 문을 사용하여 데이터베이스 이름, 데이터 정렬, 최대 크기, 버전, 서비스 목표 및 새 데이터베이스의 탄력적 풀(해당하는 경우)을 지정합니다. 탄력적 풀에서 데이터베이스를 만드는 데 사용할 수도 있습니다. 또한 다른 SQL Database 서버에서 데이터베이스 복사본을 만드는 데 사용할 수 있습니다.
구문
데이터베이스 만들기
구문 표기 규칙에 대한 자세한 내용은 Transact-SQL 구문 표기 규칙을 참조하세요.
CREATE DATABASE database_name [ COLLATE collation_name ]
{
(<edition_options> [ , ...n ] )
}
[ WITH <with_options> [ , ..n ] ]
[ ; ]
<with_options> ::=
{
CATALOG_COLLATION = { DATABASE_DEFAULT | SQL_Latin1_General_CP1_CI_AS }
| BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }
| LEDGER = { ON | OFF }
}
<edition_options> ::=
{
MAXSIZE = { 100 MB | 500 MB | 1 ... 1024 ... 4096 GB }
| ( EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale' }
| SERVICE_OBJECTIVE =
{ 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S6' | 'S7' | 'S9' | 'S12'
| 'P1' | 'P2' | 'P4' | 'P6' | 'P11' | 'P15'
| 'BC_DC_n'
| 'BC_Gen5_n'
| 'BC_M_n'
| 'GP_DC_n'
| 'GP_Fsv2_n'
| 'GP_Gen5_n'
| 'GP_S_Gen5_n'
| 'HS_DC_n'
| 'HS_Gen5_n'
| 'HS_S_Gen5_n'
| 'HS_MOPRMS_n'
| 'HS_PRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) } } )
}
데이터베이스 복사
CREATE DATABASE database_name
AS COPY OF [ source_server_name. ] source_database_name
[ ( SERVICE_OBJECTIVE =
{ 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S6' | 'S7' | 'S9' | 'S12'
| 'P1' | 'P2' | 'P4' | 'P6' | 'P11' | 'P15'
| 'GP_Gen5_n'
| 'GP_Fsv2_n'
| 'GP_S_Gen5_n'
| 'BC_Gen5_n'
| 'BC_M_n'
| 'HS_Gen5_n'
| 'HS_S_Gen5_n'
| 'HS_PRMS_n'
| 'HS_MOPRMS_n'
| { ELASTIC_POOL(name = <elastic_pool_name>) } } )
]
[ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' } ) ]
[ ; ]
인수
database_name
새 데이터베이스의 이름입니다. 이 이름은 SQL Server에서 고유해야 하며 식별자에 대한 SQL Server 규칙을 따라야 합니다. 자세한 내용은 데이터베이스 식별자를 참조하세요.
collation_name
데이터베이스 데이터의 기본 데이터 정렬을 지정합니다. 개체 식별자와 같은 시스템 메타데이터를 지정 CATALOG_COLLATION 합니다.
데이터 정렬 이름으로는 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름을 사용할 수 있습니다. 지정하지 않으면 데이터베이스에 기본 데이터 정렬이 SQL_Latin1_General_CP1_CI_AS할당됩니다.
Windows 및 SQL 데이터 정렬 이름에 대한 자세한 내용은 COLLATE를 참조하세요.
CATALOG_COLLATION
메타데이터 카탈로그의 기본 데이터 정렬을 지정합니다. 인수는 CATALOG_COLLATION 데이터베이스를 만드는 동안에만 사용할 수 있으며 만든 후에는 변경할 수 없습니다.
기본적으로 시스템 개체 이름에 대한 메타데이터 카탈로그는 데이터 정렬에 SQL_Latin1_General_CP1_CI_AS 정렬됩니다. 지정되지 않은 경우 CATALOG_COLLATION Azure SQL Database의 기본 설정입니다.
DATABASE_DEFAULT 는 시스템 뷰 및 시스템 테이블에 사용되는 메타데이터 카탈로그를 데이터베이스의 데이터 정렬과 일치하도록 정렬하도록 지정합니다. 시스템 메타데이터의 개체 식별자가 데이터와 동일한 데이터 정렬을 따르도록 하려면 데이터베이스 WITH CATALOG_COLLATION = DATABASE_DEFAULT를 만들어야 합니다.
데이터 및 개체 식별자에 대해 서로 다른 데이터 정렬을 사용할 수 있습니다. 다음 예제에서는 행 데이터에 대/소문자를 구분하는 데이터 정렬을 사용하여 데이터베이스를 만들지만 개체 식별자에는 대/소문자를 구분하지 않는 기본
SQL_Latin1_General_CP1_CI_AS데이터 정렬을 사용합니다.CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS;데이터와 시스템 메타데이터가 모두 동일한 데이터 정렬을 사용하려면 다음을 지정합니다
WITH CATALOG_COLLATION = DATABASE_DEFAULT. 다음 예제에서는 개체 식별자에 사용되는 대/소문자 구분 데이터 정렬을 사용하여 데이터베이스를 만듭니다.CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS WITH CATALOG_COLLATION = DATABASE_DEFAULT;
BACKUP_STORAGE_REDUNDANCY = {'LOCAL' | '존' | '지오' | '지오존' }
데이터베이스에 대한 지정 시간 복원 및 장기 보존 백업을 복제하는 방법을 지정합니다. 지역 복원 또는 지역 중단에서 복구하는 기능은 백업 스토리지 중복을 사용하여 GEO 데이터베이스를 만든 경우에만 사용할 수 있습니다. 명시적으로 지정되지 않은 한 T-SQL로 생성된 데이터베이스는 지역 중복 백업 스토리지를 사용합니다.
지역 영역 중복 스토리지에 사용합니다 GEOZONE . GZRS(Geo-zone Redundant Storage)는 모든 워크로드에 대한 지역 중단뿐만 아니라 영역 중단에 대해 최고 수준의 보호를 제공합니다.
T-SQL을 사용하여 데이터베이스를 만들 때 데이터 상주를 적용하려면 매개 변수를 LOCAL 사용하거나 ZONE 입력으로 사용합니다BACKUP_STORAGE_REDUNDANCY.
를 사용하여 AS COPY OF데이터베이스를 다른 데이터베이스의 복사본으로 만들 때 옵션을 지정하는 것이 지원되며 괄호로 묶어야 합니다. 예들 들어 WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');입니다.
장부 = { 온 | 꺼짐 }
ON으로 설정된 경우 모든 사용자 데이터의 무결성이 보호되는 원장 데이터베이스를 만듭니다. 원장 데이터베이스에는 원장 테이블만 만들 수 있습니다. 기본값은 OFF입니다. 데이터베이스를 LEDGER 만든 후에는 옵션 값을 변경할 수 없습니다. 자세한 내용은 원장 데이터베이스 구성을 참조하세요.
최대 크기
데이터베이스의 최대 크기를 지정합니다.
MAXSIZE 는 지정된 EDITION (서비스 계층)에 대해 유효해야 합니다.
다음은 서비스 계층에 대해 지원되는 MAXSIZE 값 및 기본값(D)입니다.
참고
하이퍼 MAXSIZE 스케일 서비스 계층의 단일 데이터베이스에는 인수가 적용되지 않습니다. 단일 하이퍼스케일 계층 데이터베이스는 필요에 따라 최대 128TB까지 증가합니다. SQL Database 서비스는 스토리지를 자동으로 추가하므로 최대 크기를 설정할 필요가 없습니다.
SQL Database 서버의 단일 및 풀링된 데이터베이스에 대한 DTU 모델
MAXSIZE |
기초 | S0-S2 | S3-S12 | P1-P6 | P11-P15 1 |
|---|---|---|---|---|---|
| 100MB | Yes | Yes | Yes | Yes | Yes |
| 500MB | Yes | Yes | Yes | Yes | Yes |
| 1GB | Yes | Yes | Yes | Yes | Yes |
| 2GB | 예(D) | Yes | Yes | Yes | Yes |
| 5GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 10GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 20GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 30GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 40GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 50GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 100GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 150GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 200GB | 해당 없음 | Yes | Yes | Yes | Yes |
| 250GB | 해당 없음 | 예(D) | 예(D) | Yes | Yes |
| 300GB | 해당 없음 | 해당 없음 | Yes | Yes | Yes |
| 400GB | 해당 없음 | 해당 없음 | Yes | Yes | Yes |
| 500GB | 해당 없음 | 해당 없음 | Yes | 예(D) | Yes |
| 750GB | 해당 없음 | 해당 없음 | Yes | Yes | Yes |
| 1,024GB | 해당 없음 | 해당 없음 | Yes | Yes | 예(D) |
| 1,024GB에서 4,096GB까지 256GB 증가 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | Yes |
1 P11 및 P15는 1,024GB가 기본 크기인 최대 4TB를 허용 MAXSIZE 합니다. P11 및 P15는 추가 비용 없이 최대 4TB가 포함된 스토리지를 사용할 수 있습니다. 프리미엄 계층 MAXSIZE 에서 1TB보다 큰 지역은 현재 미국 동부2, 미국 서부, US Gov 버지니아, 서유럽, 독일 중부, 동남 아시아, 일본 동부, 오스트레일리아 동부, 캐나다 중부 및 캐나다 동부에서 사용할 수 있습니다. DTU 모델의 리소스 제한에 대한 자세한 내용은 DTU 구매 모델인 Azure SQL Database를 사용하는 단일 데이터베이스에 대한 리소스 제한을 참조하세요.
DTU 모델의 값(지정된 경우)은 MAXSIZE 지정된 서비스 계층에 대해 이전 표에 표시된 유효한 값이어야 합니다.
vCore 구매 모델의 최대 데이터 크기 및 tempdb 크기와 같은 제한은 단일 데이터베이스에 대한 리소스 제한 또는 탄력적 풀의 리소스 제한에 대한 문서를 참조하세요.
vCore 모델을 사용할 때 MAXSIZE 값을 설정하지 않으면 기본값은 32GB입니다. vCore 모델의 리소스 제한 사항에 대한 자세한 내용은 vCore 리소스 제한을 참조 하세요.
판
데이터베이스의 서비스 계층을 지정합니다.
단일 및 풀링된 데이터베이스. 사용 가능한 값은 ‘Basic’, ‘Standard’, ‘Premium’, ‘GeneralPurpose’, ‘BusinessCritical’ 및 ‘Hyperscale’입니다.
다음 규칙이 적용되고 MAXSIZE 인수가 EDITION 적용됩니다.
지정되었지만
EDITION지정되지 않은 경우MAXSIZE버전에 대한 기본값이 사용됩니다. 예를 들어 표준으로 설정되고EDITION지정되지 않은 경우MAXSIZEMAX'SIZE는 자동으로 250MB로 설정됩니다.둘 다 지정
MAXSIZE하지EDITION않으면EDITION'GeneralPurpose'로 설정되고MAXSIZE32GB로 설정됩니다.
SERVICE_OBJECTIVE
컴퓨팅 크기 및 서비스 목표를 지정합니다.
DTU 구매 모델의 경우:
S0,,S1,S2,S3S4,S6,S7S9,S12P1P2P4P6, ,P11P15최신 vCore 구매 모델의 경우 계층을 선택하고 vCore 수가 있는 미리 설정된 값 목록에서 vCore
n수를 제공합니다. 단일 데이터베이스에 대한 리소스 제한 또는 탄력적 풀에 대한 리소스 제한을 참조하세요.- 예를 들어:
- 범용, 프로비전된 컴퓨팅, 표준 시리즈(Gen5), vCore 8개에 대한
GP_Gen5_8. - 범용, 서버리스 컴퓨팅, 표준 시리즈(Gen5), vCore 8개에 대한
GP_S_Gen5_8. - 하이퍼스케일, 프로비전된 컴퓨팅, 표준 시리즈(Gen5), vCore 8개에 대한
HS_Gen5_8. - 하이퍼스케일, 서버리스 컴퓨팅, 표준 시리즈(Gen5), vCore 8개에 대한
HS_S_Gen5_8.
- 범용, 프로비전된 컴퓨팅, 표준 시리즈(Gen5), vCore 8개에 대한
- 예를 들어:
서비스 목표 설명과 크기, 버전 및 서비스 목표 조합 등의 정보에 대한 자세한 내용은 Azure SQL Database 서비스 계층을 참조하세요. 지정된 SERVICE_OBJECTIVE 항목이 지원 EDITION되지 않으면 오류가 발생합니다. 값을 한 계층에서 다른 계층으로 변경 SERVICE_OBJECTIVE 하려면(예: S1에서 P1로) 값도 변경 EDITION 해야 합니다. PRS 서비스 목표에 대한 지원이 제거되었습니다.
ELASTIC_POOL (이름 = <elastic_pool_name>)
적용 대상: 단일 및 풀링된 데이터베이스만. 하이퍼스케일 서비스 계층의 데이터베이스에는 적용되지 않습니다.
탄력적 데이터베이스 풀에 새 데이터베이스를 만들려면 데이터베이스를 SERVICE_OBJECTIVE 설정하여 ELASTIC_POOL 풀의 이름을 제공합니다. 자세한 내용은 탄력적 풀이 Azure SQL Database에서 여러 데이터베이스를 관리하고 크기를 조정하는 데 도움이 됨을 참조하세요.
[ source_server_name. ] source_database_name
적용 대상: 단일 및 풀링된 데이터베이스만.
데이터베이스를 동일하거나 다른 SQL Database 서버에 복사하는 데 사용합니다 AS COPY OF .
데이터베이스를 다른 데이터베이스 AS COPY OF의 복사본으로 만들 때 옵션을 지정하는 것이 지원되며 괄호로 래핑되어야 합니다. 예들 들어 WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');입니다.
source_server_name
원본 데이터베이스가 있는 SQL Database 서버의 이름입니다. 이 매개 변수는 원본 데이터베이스와 대상 데이터베이스가 동일한 SQL Database 서버에 있을 때 선택할 수 있습니다.
참고
인수는
AS COPY OF정규화된 고유 도메인 이름을 지원하지 않습니다. 즉, 서버의 정규화된 도메인 이름은serverName.database.windows.net이며, 데이터베이스 복사 중serverName만 사용합니다.source_database_name
복사할 데이터베이스의 이름입니다.
설명
Azure SQL Database의 데이터베이스에는 데이터베이스가 만들어질 때 설정된 몇 가지 기본 설정이 있습니다. 이러한 기본 설정에 대한 자세한 내용은 DATABASEPROPERTYEX의 값 목록을 참조하세요.
MAXSIZE는 데이터베이스의 크기를 제한하는 기능을 제공합니다. 데이터베이스 크기가 MAXSIZE에 도달하면 40544 오류 코드가 나타납니다. 이 경우 데이터를 삽입하거나 업데이트하거나 새 개체(예: 테이블, 저장 프로시저, 뷰 및 함수)를 만들 수 없습니다. 그러나 데이터 읽기 및 삭제, 테이블 자르기, 테이블 및 인덱스 삭제, 인덱스 다시 작성은 가능합니다. 그런 다음, MAXSIZE를 현재 데이터베이스 크기보다 큰 값으로 업데이트하거나 일부 데이터를 삭제하여 스토리지 공간을 비울 수 있습니다. 새 데이터를 삽입하기 전에 15분 정도 지연될 수 있습니다.
나중에 크기, 버전 또는 서비스 목표 값을 변경하려면, ALTER DATABASE(Azure SQL Database)를 사용합니다.
데이터베이스 복사본
적용 대상: 단일 및 풀링된 데이터베이스만.
CREATE DATABASE 문을 사용한 데이터베이스 복사는 비동기 작업입니다. 따라서 복사 프로세스의 전체 기간 동안 SQL Database 서버에 연결할 필요가 없습니다.
CREATE DATABASE 문은 sys.databases에서 항목을 만든 후 데이터베이스 복사 작업이 완료되기 전에 사용자에게 컨트롤을 반환합니다. 즉, 데이터베이스 복사가 진행 중인 동안에 CREATE DATABASE 문을 반환합니다.
- SQL Database 서버에서 복사 프로세스 모니터링:
percentage_complete의 또는replication_state_desc열 또는 뷰의 열을 쿼리state합니다sys.databases. 데이터베이스 복사를 포함해서 데이터베이스 작업의 상태를 반환하는 것뿐만 아니라 sys.dm_operation_status 보기도 사용할 수 있습니다.
복사 프로세스가 성공적으로 완료되면 대상 데이터베이스는 원본 데이터베이스와 트랜잭션 측면에서 일치합니다.
AS COPY OF 인수를 사용할 때는 다음 구문 및 의미 체계 규칙에 따라야 합니다.
- 원본 서버 이름과 복사 대상 서버의 이름은 서로 같아도 되고 달라도 됩니다. 이름이 동일한 경우 이 매개 변수는 선택적으로, 현재 세션의 서버 컨텍스트가 기본값으로 사용됩니다.
- 원본 및 대상 데이터베이스 이름은 고유하게 지정해야 하며 식별자에 대한 SQL Server 규칙을 따라야 합니다. 자세한 내용은 데이터베이스 식별자를 참조하세요.
-
CREATE DATABASE문은 새 데이터베이스가 만들어질 SQL Database 서버의master데이터베이스 컨텍스트 내에서 실행되어야 합니다. - 복사를 마친 뒤에는 대상 데이터베이스를 독립적인 데이터베이스로 관리해야 합니다. 원본 데이터베이스와 별도로 새 데이터베이스에 대해
ALTER DATABASE및DROP DATABASE문을 실행할 수 있습니다. 또한 새 데이터베이스를 다른 새 데이터베이스에 복사할 수 있습니다. - 데이터베이스 복사가 진행 중인 동안에도 계속해서 원본 데이터베이스에 액세스할 수 있습니다.
자세한 내용은 Azure SQL Database에서 트랜잭션 일치 복사본을 복사하는 방법을 문서를 참조하세요.
중요
기본적으로 데이터베이스 복사본은 원본 데이터베이스와 동일한 백업 스토리지 중복성을 사용하여 생성됩니다.
사용 권한
데이터베이스를 만들려면 로그인이 다음 보안 주체 중 하나여야 합니다.
- 서버 수준 보안 주체 로그인
- Azure의 논리 서버에 대한 Microsoft Entra 관리자
- 로그인은
dbmanager데이터베이스 역할의 멤버입니다.
CREATE DATABASE ... AS COPY OF 구문 사용 관련 추가 요구 사항: 로컬 서버에 문을 실행하는 로그인은 적어도 db_owner 원본 서버에 있어야 합니다. 로그인이 SQL Server 인증을 기반으로 하는 경우, 로컬 서버의 문을 실행하는 로그인에는 동일한 이름과 암호를 사용하여 원본 SQL Database 서버에서 일치하는 로그온이 있어야 합니다.
예제
기본 예제
데이터베이스를 만들기 위한 기본 예제입니다.
CREATE DATABASE TestDB1;
버전이 있는 기본 예제
범용 데이터베이스를 만들기 위한 기본 예제입니다.
CREATE DATABASE TestDB2
(EDITION = 'GeneralPurpose');
추가 옵션이 있는 예
여러 옵션을 사용하는 예
CREATE DATABASE hito
COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
( MAXSIZE = 500 MB, EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' ) ;
데이터베이스 복사본 만들기
데이터베이스의 복사본을 만드는 예
적용 대상: 단일 및 풀링된 데이터베이스만.
CREATE DATABASE escuela
AS COPY OF school;
탄력적 풀에 데이터베이스 생성
S3M100이라는 풀에 새 데이터베이스를 만듭니다.
적용 대상: 단일 및 풀링된 데이터베이스만.
CREATE DATABASE db1
(SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = S3M100));
다른 논리 서버에 데이터베이스 복사본 만들기
다음 예제에서는 단일 데이터베이스에 db_original 대한 범용 서비스 목표에 명명된 db_copy 데이터베이스의 복사본을 만듭니다. 이것은 db_original이 단일 데이터베이스의 탄력적 풀 또는 컴퓨팅 크기(서비스 목표)에 관계없이 적용됩니다.
적용 대상: 단일 및 풀링된 데이터베이스만.
CREATE DATABASE db_copy
AS COPY OF <database>.db_original
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8');
다음 예에서는 db_original이라는 이름의 탄력적 풀에 db_copy라는 이름의 ep1 데이터베이스의 복사본을 만듭니다. 이것은 db_original이 단일 데이터베이스의 탄력적 풀 또는 컴퓨팅 크기(서비스 목표)에 관계없이 적용됩니다.
db_original이 다른 이름의 탄력적 풀에 있는 경우에도 db_copy는 ep1에 만들어 집니다.
적용 대상: 단일 및 풀링된 데이터베이스만.
CREATE DATABASE db_copy
AS COPY OF <database>.db_original
(SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = ep1));
지정된 카탈로그 데이터 정렬 값을 사용하여 데이터베이스 만들기
다음 예제에서는 데이터베이스를 만드는 동안 카탈로그 데이터 정렬을 DATABASE_DEFAULT 설정하여 카탈로그 데이터 정렬을 데이터베이스 데이터 정렬과 동일하게 설정합니다.
CREATE DATABASE TestDB3 COLLATE Japanese_XJIS_140 (MAXSIZE = 100 MB, EDITION = 'Basic')
WITH CATALOG_COLLATION = DATABASE_DEFAULT;
백업을 위해 영역 중복성을 사용하여 데이터베이스 만들기
다음 예제에서는 데이터베이스 백업에 대한 영역 중복성을 설정합니다. 지정 시간 복원 백업과 장기 보존 백업(구성된 경우)은 모두 동일한 백업 스토리지 중복성을 사용합니다.
CREATE DATABASE test_zone_redundancy
WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';
원장 데이터베이스 만들기
CREATE DATABASE MyLedgerDB (EDITION = 'GeneralPurpose')
WITH LEDGER = ON;
옵션을 변경하는 동안 데이터베이스의 복사본으로 만들기
다음 예제에서는 다른 서비스 계층 및 백업 스토리지 중복 설정을 포함하여 데이터베이스의 새 복사본에 대한 다양한 옵션을 설정합니다. 기본적으로 데이터베이스 복사본은 원본 데이터베이스와 동일한 설정으로 만들어집니다.
CREATE DATABASE copy_testdb
AS COPY OF [test_db]
(EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8')
WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');
관련 콘텐츠
* SQL 관리 인스턴스 *
Azure SQL 관리형 인스턴스
개요
Azure SQL Managed Instance에서 이 문은 데이터베이스를 만드는 데 사용됩니다. 관리되는 인스턴스에서 데이터베이스를 만들 때 데이터베이스 이름 및 데이터 정렬을 지정합니다.
구문
구문 표기 규칙에 대한 자세한 내용은 Transact-SQL 구문 표기 규칙을 참조하세요.
CREATE DATABASE database_name [ COLLATE collation_name ]
[ WITH <with_options> [ , ..n ] ]
[ ; ]
<with_options> ::=
{
LEDGER = { ON | OFF }
}
중요
관리되는 인스턴스에서 데이터베이스에 대한 파일을 추가하거나 포함을 설정하려면 ALTER DATABASE 문을 사용합니다.
SQL 관리형 인스턴스의 경우 초기 MAXSIZE 는 암시적으로 현재 디스크 크기로 설정되며 Azure Portal에서 디스크 크기를 확장할 때 자동으로 변경되지 않습니다. 디스크를 확장한 후 데이터베이스 파일 전체 오류를 방지하려면 MAXSIZE로 확장 해야 합니다.
인수
database_name
새 데이터베이스의 이름입니다. 이 이름은 SQL Server에서 고유해야 하며 식별자에 대한 SQL Server 규칙을 따라야 합니다. 자세한 내용은 데이터베이스 식별자를 참조하세요.
collation_name
데이터베이스의 기본 데이터 정렬을 지정합니다. 데이터 정렬 이름으로는 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름을 사용할 수 있습니다. 지정하지 않으면 데이터베이스에 기본 데이터 정렬이 SQL_Latin1_General_CP1_CI_AS할당됩니다.
Windows 및 SQL 데이터 정렬 이름에 대한 자세한 내용은 COLLATE를 참조하세요.
장부 = { 온 | 꺼짐 }
ON으로 설정된 경우 모든 사용자 데이터의 무결성이 보호되는 원장 데이터베이스를 만듭니다. 원장 데이터베이스에는 원장 테이블만 만들 수 있습니다. 기본값은 OFF입니다. 데이터베이스를 LEDGER 만든 후에는 옵션 값을 변경할 수 없습니다. 자세한 내용은 원장 데이터베이스 구성을 참조하세요.
설명
Azure SQL Database의 데이터베이스에는 데이터베이스가 만들어질 때 설정된 몇 가지 기본 설정이 있습니다. 이러한 기본 설정에 대한 자세한 내용은 DATABASEPROPERTYEX의 값 목록을 참조하세요.
중요
CREATE DATABASE 문은 Transact-SQL 일괄 처리의 유일한 문이어야 합니다.
다음은 CREATE DATABASE 제한 사항입니다.
파일 및 파일 그룹을 정의할 수 없습니다.
WITH을 제외하고WITH LEDGER옵션은 지원되지 않습니다.팁
해결 방법으로 ALTER DATABASE를
CREATE DATABASE뒤에 사용하여 데이터베이스 옵션을 설정하고 파일을 추가합니다.
사용 권한
데이터베이스를 만들려면 로그인이 다음 유형의 보안 주체 중 하나여야 합니다.
- 서버 수준 보안 주체 로그인
- Azure의 논리 서버에 대한 Microsoft Entra 관리자
- dbcreator 데이터베이스 역할의 멤버인 로그인
예제
기본 예제
데이터베이스를 만들기 위한 기본 예제입니다.
CREATE DATABASE TestDB1;
원장 데이터베이스 만들기
CREATE DATABASE MyLedgerDB
WITH LEDGER = ON;
관련 콘텐츠
* Azure Synapse
분석*
Azure Synapse Analytics
개요
Azure Synapse에서 이 문을 Azure SQL Database 서버와 함께 사용하여 전용 SQL 풀을 만들 수 있습니다. 이 문을 사용하여 데이터베이스 이름, 데이터 정렬, 최대 크기, 버전 및 서비스 목표를 지정합니다.
-
CREATE DATABASE는 Gen2 서비스 수준을 사용하는 독립 실행형 전용 SQL 풀(이전의 SQL DW)에 대해 지원됩니다. -
CREATE DATABASE는 Azure Synapse Analytics 작업 영역의 전용 SQL 풀에 대해 지원되지 않습니다. 대신 Azure Portal을 사용합니다. -
CREATE DATABASE는 Azure Synapse Analytics의 서버리스 SQL 풀에 대해 지원됩니다.
구문
구문 표기 규칙에 대한 자세한 내용은 Transact-SQL 구문 표기 규칙을 참조하세요.
CREATE DATABASE database_name [ COLLATE collation_name ]
(
[ MAXSIZE = {
250 | 500 | 750 | 1024 | 5120 | 10240 | 20480 | 30720
| 40960 | 51200 | 61440 | 71680 | 81920 | 92160 | 102400
| 153600 | 204800 | 245760
} GB ,
]
EDITION = 'datawarehouse',
SERVICE_OBJECTIVE = {
'DW100c' | 'DW200c' | 'DW300c' | 'DW400c' | 'DW500c'
| 'DW1000c' | 'DW1500c' | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c'
| 'DW6000c' | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
}
)
[ ; ]
인수
database_name
새 데이터베이스의 이름입니다. 이 이름은 AZURE SQL Database 및 Azure Synapse Analytics 데이터베이스에서 두 데이터베이스를 모두 호스트하고 식별자에 대한 SQL Server 규칙을 준수할 수 있는 SQL Server에서 고유해야 합니다. 자세한 내용은 데이터베이스 식별자를 참조하세요.
collation_name
데이터베이스의 기본 데이터 정렬을 지정합니다. 데이터 정렬 이름으로는 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름을 사용할 수 있습니다. 지정하지 않으면 데이터베이스에 기본 데이터 정렬이 SQL_Latin1_General_CP1_CI_AS할당됩니다.
Windows 및 SQL 데이터 정렬 이름에 대한 자세한 내용은 COLLATE를 참조하세요.
최대 크기
기본값은 245,760GB(240TB)입니다.
적용 대상: Compute Gen1에 최적화됨
데이터베이스의 최대 허용 크기입니다. 데이터베이스는 확장 MAXSIZE할 수 없습니다.
적용 대상: Compute Gen2에 최적화됨
데이터베이스의 rowstore 데이터에 허용되는 최대 크기입니다. rowstore 테이블, columnstore 인덱스의 deltastore 또는 클러스터형 columnstore 인덱스의 비클러스터형 인덱스로 저장된 데이터는 확장 MAXSIZE할 수 없습니다. columnstore 형식으로 압축된 데이터에는 크기 제한이 없으며 에 의해 MAXSIZE제한되지 않습니다.
판
데이터베이스의 서비스 계층을 지정합니다. Azure Synapse Analytics의 경우 datawarehouse를 사용합니다.
SERVICE_OBJECTIVE
컴퓨팅 크기(서비스 목표)를 지정합니다. Gen2에 대한 서비스 수준은 cDWU(컴퓨팅 데이터 웨어하우스 단위)로 측정됩니다(예: DW2000c). Gen1 서비스 수준은 DWU로 측정됩니다(예: DW2000). Azure Synapse의 서비스 목표에 대한 자세한 내용은 DWU(데이터 웨어하우스 단위)를 참조하세요. Gen1 서비스 목표(더 이상 나열되지 않음)는 더 이상 지원되지 않으며 다음과 같은 오류가 발생할 수 있습니다. Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.
설명
DATABASEPROPERTYEX를 사용하여 데이터베이스 속성을 확인합니다.
나중에 최대 크기 또는 서비스 목표 값을 변경하려면 ALTER DATABASE - Azure Synapse Analytics를 사용합니다.
Azure Synapse는 설정 COMPATIBILITY_LEVEL 130 되며 변경할 수 없습니다. 자세한 내용은 ALTER DATABASE 호환성 수준을 참조하세요.
사용 권한
필요한 권한
- 프로비전 프로세스에 의해 생성된 서버 수준 보안 주체 로그인 또는
- dbmanager 데이터베이스 역할의 멤버입니다.
오류 처리
데이터베이스 크기에 도달 MAXSIZE하면 SQL Server에서 오류 코드 40544가 발생합니다. 이 경우 데이터를 삽입 및 업데이트하거나 새 개체(예: 테이블, 저장 프로시저, 뷰 및 함수)를 만들 수 없습니다. 데이터 읽기 및 삭제, 테이블 자르기, 테이블 및 인덱스 삭제 및 인덱스 다시 작성은 여전히 가능합니다. 그런 다음, MAXSIZE를 현재 데이터베이스 크기보다 큰 값으로 업데이트하거나 일부 데이터를 삭제하여 스토리지 공간을 비울 수 있습니다. 새 데이터 삽입까지 최대 15분을 지연시킬 수 있습니다.
제한 사항
새 데이터베이스를 만들려면 master 데이터베이스에 연결해야 합니다.
CREATE DATABASE 문은 Transact-SQL 일괄 처리의 유일한 문이어야 합니다.
데이터베이스를 만든 후에는 데이터베이스 데이터 정렬을 변경할 수 없습니다.
예제: Azure Synapse Analytics
A. 기본 예제
독립 실행형 전용 SQL 풀(이전의 SQL DW)을 만드는 기본 예제입니다. 이렇게 하면 가장 작은 최대 크기(10,240GB), 기본 데이터 정렬(SQL_Latin1_General_CP1_CI_AS), 가장 작은 Gen2 서비스 목표(DW100)가 있는 데이터베이스가 만들어집니다.
CREATE DATABASE TestDW
(EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW100c');
B. 모든 옵션을 사용하여 데이터 웨어하우스 데이터베이스 만들기
10테라바이트 독립 실행형 전용 SQL 풀(이전의 SQL DW)을 만드는 간단한 예제입니다.
CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
(MAXSIZE = 10240 GB, EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW1000c');
C. Synapse Analytics 서버리스 SQL 풀의 기본 예제
이 예제에서는 데이터 정렬(Latin1_General_100_CI_AS_KS_WS)을 지정하여 서버리스 풀에 데이터베이스를 만듭니다.
CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS;
관련 콘텐츠
* 분석 플랫폼
시스템(PDW) *
분석 플랫폼 시스템
개요
Analytics Platform System에서 이 문은 Analytics Platform System 어플라이언스에서 새 데이터베이스를 만드는 데 사용됩니다. 이 문을 사용하여 어플라이언스 데이터베이스와 관련된 모든 파일을 만들고 데이터베이스 테이블 및 트랜잭션 로그에 대한 최대 크기 및 자동 증가 옵션을 설정합니다.
구문
구문 표기 규칙에 대한 자세한 내용은 Transact-SQL 구문 표기 규칙을 참조하세요.
CREATE DATABASE database_name
WITH (
[ AUTOGROW = ON | OFF , ]
REPLICATED_SIZE = replicated_size [ GB ] ,
DISTRIBUTED_SIZE = distributed_size [ GB ] ,
LOG_SIZE = log_size [ GB ] )
[ ; ]
인수
database_name
새 데이터베이스의 이름입니다. 허용되는 데이터베이스 이름에 대한 자세한 내용은 Analytics Platform System(PDW) 제품 설명서에서 "개체 명명 규칙" 및 "예약된 데이터베이스 이름"을 참조하세요.
자동성장 = { 온 | 꺼짐 }
replicated_size, distributed_size 및 log_size 매개 변수가 지정된 크기를 초과하여 필요에 따라 자동으로 증가할지 여부를 지정합니다. 기본값은 OFF여야 합니다.
인 경우AUTOGROW, ON, distributed_size 및 log_size 이미 할당된 것보다 더 많은 스토리지가 필요한 각 데이터 삽입, 업데이트 또는 기타 작업에 따라 필요에 따라 증가합니다.
이 AUTOGROW경우 OFF 크기가 자동으로 증가하지 않습니다. PDW(Analytics Platform System)는 replicated_size, distributed_size또는log_size 지정된 값을 초과하여 증가해야 하는 작업을 시도할 때 오류를 반환합니다.
AUTOGROW
ON 는 모든 크기 또는 OFF 모든 크기에 대한 것입니다. 예를 들어 AUTOGROW ON 설정할 수는 없지만 replicated_size 설정할 수는 없습니다.
replicated_size [ GB ]
양수입니다. 각 컴퓨팅 노드에서 복제된 테이블과 해당 데이터에 할당된 총 공간에 대한 크기(정수 또는 10진 기가바이트로)를 설정합니다. 최소 및 최대 replicated_size 요구 사항은 Analytics Platform System(PDW) 제품 설명서에서 "최소 및 최대 값"을 참조하세요.
이 AUTOGROW경우 ON 복제된 테이블이 이 제한을 초과하여 증가할 수 있습니다.
이 AUTOGROW경우 OFF 사용자가 새 복제 테이블을 만들거나, 기존 복제 테이블에 데이터를 삽입하거나, 기존 복제 테이블을 업데이트하여 크기를 replicated_size 이상으로 늘리려고 하면 오류가 반환됩니다.
distributed_size [ GB ]
양수입니다. 어플라이언스 전반에 걸쳐 복제된 테이블(및 해당 데이터)에 할당된 총 공간에 대한 정수 또는 10진 기가바이트로 표시된 크기입니다. 최소 및 최대 distributed_size 요구 사항은 Analytics Platform System(PDW) 제품 설명서에서 "최소 및 최대 값"을 참조하세요.
이 AUTOGROW경우 ON 분산 테이블은 이 제한을 초과하여 확장할 수 있습니다.
이 AUTOGROW경우 OFF 사용자가 새 분산 테이블을 만들거나, 기존 분산 테이블에 데이터를 삽입하거나, distributed_size 초과하여 크기를 늘리는 방식으로 기존 분산 테이블을 업데이트하려고 하면 오류가 반환됩니다.
log_size [ GB ]
양수입니다. 어플라이언스 전반에 걸친 트랜잭션 로그에 대한 크기(정수 또는 10진 기가바이트로 표시된)입니다.
최소 및 최대 log_size 요구 사항은 Analytics Platform System(PDW) 제품 설명서에서 "최소 및 최대 값"을 참조하세요.
이 AUTOGROW경우 ON 로그 파일은 이 제한을 초과하여 확장할 수 있습니다.
DBCC SHRINKLOG - PDW(Analytics Platform System) 문을 사용하여 로그 파일의 크기를 원래 크기로 줄입니다.
이 AUTOGROW경우 OFF 개별 컴퓨팅 노드의 로그 크기를 log_size 초과하는 모든 작업에 대한 오류가 사용자에게 반환됩니다.
사용 권한
CREATE ANY DATABASE 데이터베이스에서 master 권한 또는 sysadmin 고정 서버 역할에서 멤버 자격이 필요합니다.
다음 예에서는 데이터베이스 사용자 Fay에게 데이터베이스를 만들 수 있는 권한을 제공합니다.
USE master;
GO
GRANT CREATE ANY DATABASE TO [Fay];
GO
설명
SQL Server 2014(12.x)에 대한 호환성 수준인 데이터베이스 호환성 수준 120으로 데이터베이스를 만듭니다. 이렇게 하면 데이터베이스가 PDW에서 사용하는 모든 SQL Server 2014(12.x) 기능을 사용할 수 있습니다.
제한 사항
CREATE DATABASE 명시적 트랜잭션에서는 문이 허용되지 않습니다. 자세한 내용은 Transact-SQL 문을 참조하세요.
데이터베이스의 최소 및 최대 제약 조건에 대한 자세한 내용은 Analytics Platform System(PDW) 제품 설명서에서 "최소 및 최대 값"을 참조하세요.
데이터베이스를 만들 경우 다음 크기의 총합계를 할당하기 위해 각 컴퓨팅 노드에 충분히 사용할 수 있는 여유 공간이 있어야 합니다.
- replicated_table_size 크기의 테이블이 있는 SQL Server 데이터베이스입니다.
- (distributed_table_size / 컴퓨팅 노드 수) 크기의 테이블이 있는 SQL Server 데이터베이스입니다.
- (log_size / 컴퓨팅 노드 수) 크기의 SQL Server 로그입니다.
잠금
DATABASE 개체에 대한 공유 잠금을 수행합니다.
메타데이터
이 작업이 성공하면 이 데이터베이스에 대한 항목이 sys.databases 및 sys.objects 메타데이터 뷰에 표시됩니다.
예제: 분석 플랫폼 시스템(PDW)
A. 기본 데이터베이스 만들기 예제
다음 예제에서는 복제된 테이블에 대해 컴퓨팅 노드당 100GB, 분산된 테이블에 대해 어플라이언스당 500GB, 트랜잭션 로그에 대해 어플라이언스당 100GB의 스토리지 용량이 있는 mytest 데이터베이스를 만듭니다. 이 예에서는 기본적으로 AUTOGROW 꺼져 있습니다.
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB );
다음 예에서는 켜져 있는 것을 제외하고 mytest 동일한 매개 변수를 사용하여 데이터베이스를 AUTOGROW 만듭니다. 이렇게 하면 데이터베이스가 지정된 크기 매개 변수를 벗어나 성장할 수 있습니다.
CREATE DATABASE mytest
WITH
(AUTOGROW = ON,
REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB);
B. 부분 기가바이트 크기를 사용하여 데이터베이스 만들기
다음 예제에서는 데이터베이스 mytestAUTOGROW 를 만듭니다. 끄기, 복제된 테이블의 경우 컴퓨팅 노드당 1.5GB, 분산 테이블의 경우 어플라이언스당 5.25GB, 트랜잭션 로그의 어플라이언스당 10GB의 스토리지 할당입니다.
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 1.5 GB,
DISTRIBUTED_SIZE = 5.25 GB,
LOG_SIZE = 10 GB);