CREATE DATABASE(SQL Server Transact-SQL)CREATE DATABASE (SQL Server Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

새 데이터베이스, 데이터베이스 저장에 사용되는 파일 및 데이터베이스 스냅숏을 만들거나 이전에 만든 데이터베이스의 분리된 파일에서 데이터베이스를 연결합니다.Creates a new database and the files used to store the database, a database snapshot, or attaches a database from the detached files of a previously created database.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


      Create a database  
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 }  
}  

<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 ]  
}  

<service_broker_option> ::=  
{  
    ENABLE_BROKER  
  | NEW_BROKER  
  | ERROR_BROKER_CONVERSATIONS  
}  

      Attach a database  
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 } )  
}  

      Create a database snapshot  
CREATE DATABASE database_snapshot_name   
    ON   
    (  
        NAME = logical_file_name,  
        FILENAME = 'os_file_name'   
    ) [ ,...n ]   
    AS SNAPSHOT OF source_database_name  
[;]  

인수Arguments

database_namedatabase_name
새 데이터베이스의 이름입니다.Is the name of the new database. 데이터베이스 이름은의 인스턴스 내에서 고유 해야 합니다. SQL ServerSQL Server 에 대 한 규칙을 따라야 하며 식별자합니다.Database names must be unique within an instance of SQL ServerSQL Server and comply with the rules for identifiers.

a s e _ 로그 파일에 대 한 논리적 이름을 지정 하지 않으면 하지 않는 한 최대 128 자가 될 수 있습니다.database_name can be a maximum of 128 characters, unless a logical name is not specified for the log file. 논리 로그 파일 이름을 지정 하지 않으면 SQL ServerSQL Server 생성는 logical_file_nameos_file_name 접미사를 추가 하 여 로그에 대 한 database_name.If a logical log file name is not specified, SQL ServerSQL Server generates the logical_file_name and the os_file_name for the log by appending a suffix to database_name. 이 인해 제한 database_name 를 123 자로 생성 된 논리적 파일 이름이 128 자가 하입니다.This limits database_name to 123 characters so that the generated logical file name is no more than 128 characters.

데이터 파일 이름을 지정 하지 않으면 SQL ServerSQL Server 사용 하 여 database_name 둘 다로 logical_file_nameos_file_name합니다.If data file name is not specified, SQL ServerSQL Server uses database_name as both the logical_file_name and as the os_file_name. 기본 경로는 레지스트리에서 가져옵니다.The default path is obtained from the registry. 사용 하 여 기본 경로 변경할 수는 서버 속성 (데이터베이스 설정 페이지) 에서 Management StudioManagement Studio합니다.The default path can be changed by using the Server Properties (Database Settings Page) in Management StudioManagement Studio. 기본 경로를 변경하려면 SQL ServerSQL Server를 다시 시작해야 합니다.Changing the default path requires restarting SQL ServerSQL Server.

CONTAINMENT = { NONE | PARTIAL }CONTAINMENT = { NONE | PARTIAL }

적용 대상: SQL Server 2012SQL Server 2012 통해 SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

데이터베이스의 포함 상태를 지정합니다.Specifies the containment status of the database. NONE = 포함되지 않은 데이터베이스입니다.NONE = non-contained database. PARTIAL = 부분적으로 포함된 데이터베이스입니다.PARTIAL = partially contained database.

ONON
데이터베이스의 데이터 섹션을 저장하는 데 사용하는 디스크 파일인 데이터 파일을 명시적으로 정의하도록 지정합니다.Specifies that the disk files used to store the data sections of the database, data files, are explicitly defined. ON은 쉼표로 구분 된 목록이 뒤에 나올 <filespec > 주 파일 그룹에 대 한 데이터 파일을 정의 하는 항목입니다.ON is required when followed by a comma-separated list of <filespec> items that define the data files for the primary filegroup. 주 파일 그룹에 파일 목록이 선택적, 쉼표로 구분 된 목록이 올 수 있습니다 <파일 그룹 > 사용자 파일 및 파일을 정의 하는 항목입니다.The list of files in the primary filegroup can be followed by an optional, comma-separated list of <filegroup> items that define user filegroups and their files.

PRIMARYPRIMARY
지정 하는 연결 된 <filespec > 목록이 주 파일을 정의 합니다.Specifies that the associated <filespec> list defines the primary file. 에 지정 된 첫 번째 파일은 <filespec > 항목 주 파일 그룹에 주 파일이 됩니다.The first file specified in the <filespec> entry in the primary filegroup becomes the primary file. 데이터베이스에는 주 파일이 하나만 있을 수 있습니다.A database can have only one primary file. 자세한 내용은 Database Files and Filegroups을 참조하세요.For more information, see Database Files and Filegroups.

PRIMARY를 지정하지 않으면 CREATE DATABASE 문에 나열된 첫 번째 파일이 주 파일이 됩니다.If PRIMARY is not specified, the first file listed in the CREATE DATABASE statement becomes the primary file.

LOG ONLOG ON
데이터베이스 로그를 저장하는 데 사용하는 디스크 파일인 로그 파일을 명시적으로 정의하도록 지정합니다.Specifies that the disk files used to store the database log, log files, are explicitly defined. LOG ON의 쉼표로 구분 된 목록이 옵니다 <filespec > 로그 파일을 정의 하는 항목입니다.LOG ON is followed by a comma-separated list of <filespec> items that define the log files. LOG ON을 지정하지 않은 경우에는 데이터베이스의 모든 데이터 파일 크기를 합한 값의 25% 또는 512KB 중에서 더 큰 값을 갖는 로그 파일 하나가 자동으로 만들어집니다.If LOG ON is not specified, one log file is automatically created, which has a size that is 25 percent of the sum of the sizes of all the data files for the database, or 512 KB, whichever is larger. 이 파일은 기본 로그 파일 위치에 저장됩니다.This file is placed in the default log-file location. 이 위치에 대 한 정보를 참조 하세요. 확인 하거나 데이터 및 로그 파일 (에 대 한 기본 위치 변경 SQL Server Management studio) .For information about this location, see View or Change the Default Locations for Data and Log Files (SQL Server Management Studio).

데이터베이스 스냅숏에는 LOG ON을 지정할 수 없습니다.LOG ON cannot be specified on a database snapshot.

COLLATE 데이터 정렬 이름COLLATE collation_name
데이터베이스의 기본 데이터 정렬을 지정합니다.Specifies the default collation for the database. 데이터 정렬 이름으로는 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름을 사용할 수 있습니다.Collation name can be either a Windows collation name or a SQL collation name. 이 인수를 지정하지 않으면 데이터베이스에 SQL ServerSQL Server 인스턴스의 기본 데이터 정렬이 할당됩니다.If not specified, the database is assigned the default collation of the instance of SQL ServerSQL Server. 데이터베이스 스냅숏에는 데이터 정렬 이름을 지정할 수 없습니다.A collation name cannot be specified on a database snapshot.

FOR ATTACH 또는 FOR ATTACH_REBUILD_LOG 절을 사용하여 데이터 정렬 이름을 지정할 수 없습니다.A collation name cannot be specified with the FOR ATTACH or FOR ATTACH_REBUILD_LOG clauses. 이 연결된 된 데이터베이스의 데이터 정렬을 변경 하는 방법에 대 한 내용은 방문 Microsoft 웹 사이트합니다.For information about how to change the collation of an attached database, visit this Microsoft Web site.

Windows 및 SQL 데이터 정렬 이름에 대 한 자세한 내용은 참조 하십시오. collate( Transact SQL ) .For more information about the Windows and SQL collation names, see COLLATE (Transact-SQL).

참고

포함된 데이터베이스는 포함되지 않은 데이터베이스와 다른 방식으로 데이터가 정렬됩니다.Contained databases are collated differently than non-contained databases. 참조 하십시오 Contained Database Collations 자세한 정보에 대 한 합니다.Please see Contained Database Collations for more information.

와 <옵션 >WITH <option>

  • <filestream_options ><filestream_options>

    NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | 전체}NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
    적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

    데이터베이스에 대한 비트랜잭션 FILESTREAM 액세스 수준을 지정합니다.Specifies the level of non-transactional FILESTREAM access to the database.

    Value 설명Description
    OFFOFF 비트랜잭션 액세스는 사용할 수 없습니다.Non-transactional access is disabled.
    READONLYREADONLY 비트랜잭션 프로세스에서 이 데이터베이스의 FILESTREAM 데이터를 읽을 수 있습니다.FILESTREAM data in this database can be read by non-transactional processes.
    FULLFULL FILESTREAM FileTable에 대한 전체 비트랜잭션 액세스를 사용할 수 있습니다.Full non-transactional access to FILESTREAM FileTables is enabled.

    DIRECTORY_NAME = <directory_name > 적용할: SQL Server 2012SQL Server 2012 통해 SQL Server 2017SQL Server 2017DIRECTORY_NAME = <directory_name> Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

    Windows 호환 디렉터리 이름입니다.A windows-compatible directory name. 이 이름은 SQL ServerSQL Server 인스턴스의 모든 Database_Directory 이름 중에서 고유해야 합니다.This name should be unique among all the Database_Directory names in the SQL ServerSQL Server instance. 고유성 비교는 대/소문자를 구분하며 SQL ServerSQL Server 데이터 정렬 설정과 관계가 없습니다.Uniqueness comparison is case-insensitive, regardless of SQL ServerSQL Server collation settings. 데이터베이스에 FileTable을 만들기 전에 이 옵션을 설정해야 합니다.This option should be set before creating a FileTable in this database.

    CONTAINMENT가 PARTIAL로 설정된 경우에만 다음 옵션을 사용할 수 있습니다.The following options are allowable only when CONTAINMENT has been set to PARTIAL. CONTAINMENT가 NONE으로 설정되어 있으면 오류가 발생합니다.If CONTAINMENT is set to NONE, errors will occur.

  • DEFAULT_FULLTEXT_LANGUAGE = <lcid > | <언어 이름 > | <언어 별칭 >DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <language name> | <language alias>

적용 대상: SQL Server 2012SQL Server 2012 통해 SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [Configure the default full-text language Server Configuration Option](../../database-engine/configure-windows/configure-the-default-full-text-language-server-configuration-option.md) for a full description of this option.  
  • DEFAULT_LANGUAGE = <lcid > | <언어 이름 > | <언어 별칭 >DEFAULT_LANGUAGE = <lcid> | <language name> | <language alias>

적용 대상: SQL Server 2012SQL Server 2012 통해 SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [Configure the default language Server Configuration Option](../../database-engine/configure-windows/configure-the-default-language-server-configuration-option.md) for a full description of this option.  
  • NESTED_TRIGGERS = {OFF | ON}NESTED_TRIGGERS = { OFF | ON}

적용 대상: SQL Server 2012SQL Server 2012 통해 SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [Configure the nested triggers Server Configuration Option](../../database-engine/configure-windows/configure-the-nested-triggers-server-configuration-option.md) for a full description of this option.  
  • TRANSFORM_NOISE_WORDS = {OFF | ON}TRANSFORM_NOISE_WORDS = { OFF | ON}

적용 대상: SQL Server 2012SQL Server 2012 통해 SQL Server 2017SQL Server 2017Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017

 See [transform noise words Server Configuration Option](../../database-engine/configure-windows/transform-noise-words-server-configuration-option.md)for a full description of this option.  
  • TWO_DIGIT_YEAR_CUTOFF = {2049 | <1753에서 9999 사이의 연도 >}TWO_DIGIT_YEAR_CUTOFF = { 2049 | <any year between 1753 and 9999> }

    연도를 나타내는 4자리 숫자입니다.Four digits representing a year. 기본값은 2049입니다.2049 is the default value. 참조 구성 two digit year cutoff 서버 구성 옵션 에 대 한 전체 설명은이 옵션입니다.See Configure the two digit year cutoff Server Configuration Option for a full description of this option.

  • DB_CHAINING {OFF | ON}DB_CHAINING { OFF | ON }

    ON이 지정되면 데이터베이스가 데이터베이스 간 소유권 체인의 원본 또는 대상이 될 수 있습니다.When ON is specified, the database can be the source or target of a cross-database ownership chain.

    OFF가 지정되면 데이터베이스가 데이터베이스 간 소유권 체인에 참여할 수 없습니다.When OFF, the database cannot participate in cross-database ownership chaining. 기본값은 OFF입니다.The default is OFF.

    중요

    SQL ServerSQL Server 인스턴스는 cross db ownership chaining 서버 옵션이 0(OFF)일 때 이 설정을 인식할 수 있습니다.The instance of SQL ServerSQL Server will recognize this setting when the cross db ownership chaining server option is 0 (OFF). cross db ownership chaining이 1(ON)이면 모든 사용자 데이터베이스는 이 옵션 값에 관계없이 데이터베이스 간 소유권 체인에 참여할 수 있습니다.When cross db ownership chaining is 1 (ON), all user databases can participate in cross-database ownership chains, regardless of the value of this option. 이 옵션을 사용 하 여 설정 sp_configure합니다.This option is set by using sp_configure.

    이 옵션을 설정하려면 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.To set this option, requires membership in the sysadmin fixed server role. DB_CHAINING 옵션은 시스템 데이터베이스에서는 설정할 수 없습니다: master, model, tempdb입니다.The DB_CHAINING option cannot be set on these system databases: master, model, tempdb.

  • 신뢰할 수 있는 {OFF | ON}TRUSTWORTHY { OFF | ON }

    ON이 지정되면 뷰, 사용자 정의 함수 또는 저장 프로시저와 같이 가장 컨텍스트를 사용하는 데이터베이스 모듈이 데이터베이스 외부 리소스에 액세스할 수 있습니다.When ON is specified, database modules (for example, views, user-defined functions, or stored procedures) that use an impersonation context can access resources outside the database.

    OFF가 지정되면 가장 컨텍스트의 데이터베이스 모듈이 데이터베이스 외부의 리소스에 액세스할 수 없습니다.When OFF, database modules in an impersonation context cannot access resources outside the database. 기본값은 OFF입니다.The default is OFF.

    TRUSTWORTHY는 데이터베이스가 연결될 때마다 OFF로 설정됩니다.TRUSTWORTHY is set to OFF whenever the database is attached.

    기본적으로 msdb 데이터베이스를 제외한 모든 시스템 데이터베이스는 TRUSTWORTHY가 OFF로 설정되어 있습니다.By default, all system databases except the msdb database have TRUSTWORTHY set to OFF. model 및 tempdb 데이터베이스에 대해서는 이 값을 변경할 수 없습니다.The value cannot be changed for the model and tempdb databases. master 데이터베이스의 경우 TRUSTWORTHY 옵션을 ON으로 설정하지 않는 것이 좋습니다.We recommend that you never set the TRUSTWORTHY option to ON for the master database.

    이 옵션을 설정하려면 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.To set this option, requires membership in the sysadmin fixed server role.

    FOR ATTACH [WITH < attach_database_option >] 데이터베이스에 의해 만들어진 지정 연결 기존의 운영 체제 파일 집합입니다.FOR ATTACH [ WITH < attach_database_option > ] Specifies that the database is created by attaching an existing set of operating system files. 있어야는 <filespec > 주 파일을 지정 하는 항목입니다.There must be a <filespec> entry that specifies the primary file. 경우에 다른 <filespec >는 데 필요한 항목은 필요한 파일을 다른 경로를 데이터베이스가 처음 생성 또는 마지막으로 연결에 대 한 합니다.The only other <filespec> entries required are those for any files that have a different path from when the database was first created or last attached. A <filespec > 이러한 파일에 대 한 항목을 지정 해야 합니다.A <filespec> entry must be specified for these files.

    FOR ATTACH를 사용하려면 다음과 같은 조건을 충족해야 합니다.FOR ATTACH requires the following:

  • 모든 데이터 파일(MDF 및 NDF)을 사용할 수 있어야 합니다.All data files (MDF and NDF) must be available.

  • 로그 파일이 여러 개 있는 경우 해당 파일을 모두 사용할 수 있어야 합니다.If multiple log files exist, they must all be available.

    읽기/쓰기 데이터베이스에 현재 사용할 수 없는 로그 파일이 하나 있고 연결 작업 이전에 사용자 또는 열린 트랜잭션 없이 데이터베이스가 종료된 경우 FOR ATTACH를 사용하면 자동으로 로그 파일이 다시 작성되고 주 파일이 업데이트됩니다.If a read/write database has a single log file that is currently unavailable, and if the database was shut down with no users or open transactions before the attach operation, FOR ATTACH automatically rebuilds the log file and updates the primary file. 반면에 읽기 전용 데이터베이스의 경우에는 주 파일을 업데이트할 수 없으므로 로그를 다시 작성할 수 없습니다.In contrast, for a read-only database, the log cannot be rebuilt because the primary file cannot be updated. 따라서 사용할 수 없는 로그와 읽기 전용 데이터베이스를 연결할 때는 로그 파일 또는 FOR ATTACH 절 내의 파일을 제공해야 합니다.Therefore, when you attach a read-only database with a log that is unavailable, you must provide the log files, or the files in the FOR ATTACH clause.

참고

최신 버전의 SQL ServerSQL Server 에서 만든 데이터베이스를 이전 버전에서 연결할 수 없습니다.A database created by a more recent version of SQL ServerSQL Server cannot be attached in earlier versions.

SQL ServerSQL Server에서는 연결 중인 데이터베이스에 속한 모든 전체 텍스트 파일이 데이터베이스에 연결됩니다.In SQL ServerSQL Server, any full-text files that are part of the database that is being attached will be attached with the database. 전체 텍스트 카탈로그의 새 경로를 지정하려면 전체 텍스트 운영 체제 파일 이름을 제외한 새 위치를 지정합니다.To specify a new path of the full-text catalog, specify the new location without the full-text operating system file name. 자세한 내용은 예 섹션을 참조하십시오.For more information, see the Examples section.

에 있는 FILESTREAM 옵션을 "Directory name"을 포함 하는 데이터베이스를 연결 하는 SQL ServerSQL Server 인스턴스 라는 메시지가 표시 됩니다 SQL ServerSQL Server Database_Directory 이름이 고유한 지 확인 합니다.Attaching a database that contains a FILESTREAM option of "Directory name", into a SQL ServerSQL Server instance will prompt SQL ServerSQL Server to verify that the Database_Directory name is unique. 연결 작업이 없는 경우는 오류와 함께 실패 "FILESTREAM Database_Directory 이름 <이름 >이 SQL Server 인스턴스에서 고유 하지 않습니다"입니다.If it is not, the attach operation fails with the error, "FILESTREAM Database_Directory name <name> is not unique in this SQL Server instance". 선택적 매개 변수를이 오류를 방지 하려면 directory_name,이 작업에 전달 해야 합니다.To avoid this error, the optional parameter, directory_name, should be passed in to this operation.

데이터베이스 스냅숏에는 FOR ATTACH를 지정할 수 없습니다.FOR ATTACH cannot be specified on a database snapshot.

FOR ATTACH에 RESTRICTED_USER 옵션을 지정할 수 있습니다.FOR ATTACH can specify the RESTRICTED_USER option. RESTRICTED_USER는 db_owner 고정 데이터베이스 역할 및 dbcreator와 sysadmin 고정 서버 역할의 멤버만 데이터베이스로의 연결을 허용하지만 연결되는 수는 제한하지 않습니다.RESTRICTED_USER allows for only members of the db_owner fixed database role and dbcreator and sysadmin fixed server roles to connect to the database, but does not limit their number. 자격이 없는 사용자의 연결 시도는 거부됩니다.Attempts by unqualified users are refused.

데이터베이스를 사용 하는 경우 Service BrokerService Broker, with <다음과 > FOR ATTACH 절에:If the database uses Service BrokerService Broker, use the WITH <service_broker_option> in your FOR ATTACH clause:

<다음과 > 컨트롤 Service BrokerService Broker 메시지 배달 및 Service BrokerService Broker 데이터베이스에 대 한 식별자입니다.<service_broker_option> Controls Service BrokerService Broker message delivery and the Service BrokerService Broker identifier for the database. Service BrokerService Broker 옵션은 FOR ATTACH 절을 사용할 때만 지정할 수 있습니다. options can only be specified when the FOR ATTACH clause is used.

ENABLE_BROKERENABLE_BROKER
지정된 데이터베이스에 대해 Service BrokerService Broker를 사용할 수 있도록 지정합니다.Specifies that Service BrokerService Broker is enabled for the specified database. 즉, 메시지 배달이 시작 되 고 is_broker_enabled로 설정 되 고 sys.databases 카탈로그 뷰에서 true입니다.That is, message delivery is started, and is_broker_enabled is set to true in the sys.databases catalog view. 데이터베이스에 기존 Service BrokerService Broker 식별자가 유지됩니다.The database retains the existing Service BrokerService Broker identifier.

NEW_BROKERNEW_BROKER
sys.databases와 복원된 데이터베이스 둘 다에서 새 service_broker_guid 값을 만들고 정리 작업을 통해 모든 대화 끝점을 끝냅니다.Creates a new service_broker_guid value in both sys.databases and the restored database and ends all conversation endpoints with clean up. 이때 Service Broker가 설정되지만 원격 대화 끝점에 메시지가 전송되지 않습니다.The broker is enabled, but no message is sent to the remote conversation endpoints. 이전 Service BrokerService Broker 식별자를 참조하는 경로는 새 식별자로 다시 만들어야 합니다.Any route that references the old Service BrokerService Broker identifier must be re-created with the new identifier.

ERROR_BROKER_CONVERSATIONSERROR_BROKER_CONVERSATIONS
데이터베이스가 연결 또는 복원되었다는 오류 메시지를 표시하고 모든 대화를 끝냅니다.Ends all conversations with an error stating that the database is attached or restored. Service Broker는 이 작업이 완료될 때까지 해제된 후 설정됩니다.The broker is disabled until this operation is completed and then enabled. 데이터베이스에 기존 Service BrokerService Broker 식별자가 유지됩니다.The database retains the existing Service BrokerService Broker identifier.

분리되지 않고 복사된 복제 데이터베이스를 연결하는 경우에는 다음 사항을 고려합니다.When you attach a replicated database that was copied instead of being detached, consider the following:

  • 데이터베이스를 원래 데이터베이스와 동일한 서버 인스턴스 및 버전에 연결하는 경우에는 추가 작업이 필요하지 않습니다.If you attach the database to the same server instance and version as the original database, no additional steps are required.

  • 업그레이드 된 버전을 실행 해야 하지만 동일한 서버 인스턴스로 데이터베이스를 연결 하는 경우 sp_vupgrade_replication 연결 작업이 완료 된 후 복제를 업그레이드 합니다.If you attach the database to the same server instance but with an upgraded version, you must execute sp_vupgrade_replication to upgrade replication after the attach operation is complete.

  • 버전과 관계 없이 다른 서버 인스턴스에 데이터베이스를 연결 하는 경우 실행 해야 sp_removedbreplication 연결 작업이 완료 된 후 복제를 제거 하려면.If you attach the database to a different server instance, regardless of version, you must execute sp_removedbreplication to remove replication after the attach operation is complete.

참고

연결 작업을 수행할은 vardecimal 저장소 형식을 사용 하지만 SQL Server 데이터베이스 엔진SQL Server Database Engine 이상으로 업그레이드 해야 SQL Server 2005SQL Server 2005 서비스 팩 2입니다.Attach works with the vardecimal storage format, but the SQL Server 데이터베이스 엔진SQL Server Database Engine must be upgraded to at least SQL Server 2005SQL Server 2005 Service Pack 2. vardecimal 저장소 형식을 사용하는 데이터베이스는 이전 버전의 SQL ServerSQL Server에 연결할 수 없습니다.You cannot attach a database using vardecimal storage format to an earlier version of SQL ServerSQL Server. 에 대 한 자세한 내용은 vardecimal 저장소 형식을 참조 데이터 압축합니다.For more information about the vardecimal storage format, see Data Compression.

데이터베이스가 새 SQL ServerSQL Server인스턴스로 처음으로 연결되거나 복원될 때 데이터베이스 마스터 키(서비스 마스터 키로 암호화됨)의 복사본은 서버에 아직 저장되지 않은 상태입니다.When a database is first attached or restored to a new instance of SQL ServerSQL Server, a copy of the database master key (encrypted by the service master key) is not yet stored in the server. 데이터베이스 마스터 키를 암호 해독하려면 OPEN MASTER KEY 문을 사용해야 합니다.You must use the OPEN MASTER KEY statement to decrypt the database master key (DMK). DMK를 암호 해독한 후에는 ALTER MASTER KEY REGENERATE 문을 사용하여 SMK(서비스 마스터 키)로 암호화된 DMK의 복사본을 서버에 프로비전함으로써 앞으로 자동 암호 해독을 사용하도록 설정할 수 있습니다.Once the DMK has been decrypted, you have the option of enabling automatic decryption in the future by using the ALTER MASTER KEY REGENERATE statement to provision the server with a copy of the DMK, encrypted with the service master key (SMK). 데이터베이스가 이전 버전에서 업그레이드되지 않은 경우에는 DMK를 다시 생성해야 최신 AES 알고리즘을 사용할 수 있습니다.When a database has been upgraded from an earlier version, the DMK should be regenerated to use the newer AES algorithm. DMK를 다시 생성하는 방법은 ALTER MASTER KEY(Transact-SQL)를 참조하세요.For more information about regenerating the DMK, see ALTER MASTER KEY (Transact-SQL). AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 데 소요되는 시간은 DMK에서 보호하는 개체 수에 따라 달라집니다.The time required to regenerate the DMK key to upgrade to AES depends upon the number of objects protected by the DMK. AES로 업그레이드하기 위해 DMK 키를 다시 생성하는 작업은 한 번만 필요하며 키 회전 전략의 일부로 이후에 수행하는 다시 생성 작업에 영향을 주지 않습니다.Regenerating the DMK key to upgrade to AES is only necessary once, and has no impact on future regenerations as part of a key rotation strategy. 사용 하 여 데이터베이스를 업그레이드 하는 방법에 대 한 정보에 대 한 연결을 참조 하십시오 는 데이터베이스를 사용 하 여 분리 및 연결 ( 업그레이드 Transact SQL ) .For information about how to upgrade a database by using attach, see Upgrade a Database Using Detach and Attach (Transact-SQL).

보안 정보 알 수 없거나 신뢰할 수 없는 출처의 데이터베이스를 연결 하지 않는 것이 좋습니다.Security Note We recommend that you do not attach databases from unknown or untrusted sources. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQLTransact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. 알 수 없거나 신뢰할 수 없는 소스의 데이터베이스를 사용 하기 전에 실행 DBCC CHECKDB 비프로덕션 서버의 데이터베이스에서 저장된 프로시저 또는 다른 데이터베이스에 사용자 정의 코드 같은 코드를 검사 하십시오.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server, and also examine the code, such as stored procedures or other user-defined code, in the database.

참고

TRUSTWORTHYDB_CHAINING 데이터베이스를 연결할 때 옵션은 영향을 주지 않습니다.The TRUSTWORTHY and DB_CHAINING options have no affect when attaching a database.

FOR ATTACH_REBUILD_LOGFOR ATTACH_REBUILD_LOG
기존 운영 체제 파일 집합을 연결하여 데이터베이스를 만들도록 지정합니다.Specifies that the database is created by attaching an existing set of operating system files. 이 옵션은 읽기/쓰기 데이터베이스로 제한됩니다.This option is limited to read/write databases. 있어야는 <filespec > 주 파일을 지정 하는 항목입니다.There must be a <filespec> entry specifying the primary file. 하나 이상의 트랜잭션 로그 파일이 없으면 로그 파일이 다시 작성됩니다.If one or more transaction log files are missing, the log file is rebuilt. ATTACH_REBUILD_LOG는 1MB의 새 로그 파일을 자동으로 만듭니다.The ATTACH_REBUILD_LOG automatically creates a new, 1 MB log file. 이 파일은 기본 로그 파일 위치에 저장됩니다.This file is placed in the default log-file location. 이 위치에 대 한 정보를 참조 하세요. 확인 하거나 데이터 및 로그 파일 (에 대 한 기본 위치 변경 SQL Server Management studio) .For information about this location, see View or Change the Default Locations for Data and Log Files (SQL Server Management Studio).

참고

로그 파일이 있으면 데이터베이스 엔진Database Engine이 로그 파일을 다시 작성하지 않고 해당 파일을 사용합니다.If the log files are available, the 데이터베이스 엔진Database Engine uses those files instead of rebuilding the log files.

FOR ATTACH_REBUILD_LOG를 사용하려면 다음과 같은 조건을 충족해야 합니다.FOR ATTACH_REBUILD_LOG requires the following:

  • 데이터베이스가 완전하게 종료된 상태여야 합니다.A clean shutdown of the database.

  • 모든 데이터 파일(MDF 및 NDF)을 사용할 수 있어야 합니다.All data files (MDF and NDF) must be available.

중요

이 작업을 실행하면 로그 백업 체인이 끊어집니다.This operation breaks the log backup chain. 따라서 작업이 완료된 후 전체 데이터베이스 백업을 수행하는 것이 좋습니다.We recommend that a full database backup be performed after the operation is completed. 자세한 내용은 BACKUP(Transact-SQL)을 참조하세요.For more information, see BACKUP (Transact-SQL).

일반적으로 FOR ATTACH_REBUILD_LOG는 로그 크기가 큰 읽기/쓰기 데이터베이스를 복사본이 주로 읽기 작업에만 사용되어 원본 데이터베이스에 비해 로그 공간이 덜 필요한 다른 서버에 복사할 때 사용됩니다.Typically, FOR ATTACH_REBUILD_LOG is used when you copy a read/write database with a large log to another server where the copy will be used mostly, or only, for read operations, and therefore requires less log space than the original database.

데이터베이스 스냅숏에는 FOR ATTACH_REBUILD_LOG를 지정할 수 없습니다.FOR ATTACH_REBUILD_LOG cannot be specified on a database snapshot.

연결 및 데이터베이스를 분리 하는 방법에 대 한 자세한 내용은 참조 데이터베이스 분리 및 연결 ( SQL Server ) .For more information about attaching and detaching databases, see Database Detach and Attach (SQL Server).

<filespec ><filespec>
파일 속성을 제어합니다.Controls the file properties.

이름 logical_file_nameNAME logical_file_name
파일의 논리적 이름을 지정합니다.Specifies the logical name for the file. FOR ATTACH 절 중 하나를 지정하는 경우가 아니면 FILENAME이 지정될 때 NAME이 필요합니다.NAME is required when FILENAME is specified, except when specifying one of the FOR ATTACH clauses. FILESTREAM 파일 그룹 이름은 PRIMARY로 지정할 수 없습니다.A FILESTREAM filegroup cannot be named PRIMARY.

logical_file_namelogical_file_name
파일 참조 시 SQL ServerSQL Server에서 사용하는 논리적 이름입니다.Is the logical name used in SQL ServerSQL Server when referencing the file. Logical_file_name 데이터베이스 내에서 고유 하 고 규칙을 준수 해야 식별자합니다.Logical_file_name must be unique in the database and comply with the rules for identifiers. 이 이름은 문자 상수, 유니코드 상수, 일반 식별자 또는 구분 식별자가 될 수 있습니다.The name can be a character or Unicode constant, or a regular or delimited identifier.

파일 이름 { 'os_file_name' | 'filestream_path ' }FILENAME { 'os_file_name' | 'filestream_path' }
운영 체제(물리적) 파일 이름을 지정합니다.Specifies the operating system (physical) file name.

' os_file_name '' os_file_name '
파일을 만들 때 운영 체제에서 사용한 경로와 파일 이름입니다.Is the path and file name used by the operating system when you create the file. 파일은 SQL ServerSQL Server가 설치된 로컬 서버, SAN(저장 영역 네트워크) 또는 iSCSI 기반 네트워크 중 하나의 장치에 있어야 합니다.The file must reside on one of the following devices: the local server on which SQL ServerSQL Server is installed, a Storage Area Network [SAN], or an iSCSI-based network. 지정한 경로는 CREATE DATABASE 문을 실행하기 전에 반드시 존재해야 합니다.The specified path must exist before executing the CREATE DATABASE statement. 자세한 내용은 주의 사항 섹션의 "데이터베이스 파일 및 파일 그룹"을 참조하십시오.For more information, see "Database Files and Filegroups" in the Remarks section.

파일에 UNC 경로가 지정되면 SIZE, MAXSIZE 및 FILEGROWTH 매개 변수를 설정할 수 있습니다.SIZE, MAXSIZE, and FILEGROWTH parameters can be set when a UNC path is specified for the file.

파일이 원시 파티션에 os_file_name 기존 원시 파티션의 드라이브 문자만 지정 해야 합니다.If the file is on a raw partition, os_file_name must specify only the drive letter of an existing raw partition. 각 원시 파티션에는 데이터 파일을 하나만 만들 수 있습니다.Only one data file can be created on each raw partition.

파일이 읽기 전용 보조 파일이 아니거나 데이터베이스가 읽기 전용이 아니면 데이터 파일을 압축 파일 시스템에 저장하지 마십시오.Data files should not be put on compressed file systems unless the files are read-only secondary files, or the database is read-only. 또한 로그 파일을 압축 파일 시스템에 저장하면 안 됩니다.Log files should never be put on compressed file systems.

' filestream_path '' filestream_path '
FILENAME 파일 그룹의 경우 FILENAME은 FILESTREAM 데이터가 저장될 경로를 참조합니다.For a FILESTREAM filegroup, FILENAME refers to a path where FILESTREAM data will be stored. 따라서 마지막 폴더 바로 위의 경로까지 있어야 하고 마지막 폴더 자체는 있으면 안 됩니다.The path up to the last folder must exist, and the last folder must not exist. 예를 들어 C:\MyFiles\MyFilestreamData 경로를 지정하는 경우 ALTER DATABASE를 실행하기 전에 C:\MyFiles 경로가 있어야 하지만 MyFilestreamData 폴더는 있으면 안 됩니다.For example, if you specify the path C:\MyFiles\MyFilestreamData, C:\MyFiles must exist before you run ALTER DATABASE, but the MyFilestreamData folder must not exist.

파일 그룹과 파일(<filespec>)은 같은 문으로 만들어야 합니다.The filegroup and file (<filespec>) must be created in the same statement.

SIZE 및 FILEGROWTH 속성은 FILESTREAM 파일 그룹에 적용되지 않습니다.The SIZE and FILEGROWTH properties do not apply to a FILESTREAM filegroup.

크기 크기SIZE size
파일의 크기를 지정합니다.Specifies the size of the file.

크기 수 없습니다 될 때 지정 되는 os_file_name UNC 경로로 지정 합니다.SIZE cannot be specified when the os_file_name is specified as a UNC path. SIZE는 FILESTREAM 파일 그룹에 적용되지 않습니다.SIZE does not apply to a FILESTREAM filegroup.

크기size
파일의 처음 크기입니다.Is the initial size of the file.

크기 주 파일에 대 한 제공 되지 않으면는 데이터베이스 엔진Database Engine model 데이터베이스에 있는 주 파일의 크기를 사용 합니다.When size is not supplied for the primary file, the 데이터베이스 엔진Database Engine uses the size of the primary file in the model database. 모델의 기본 크기는 8MB (부터는 SQL Server 2016SQL Server 2016) 또는 (이전 버전)의 경우 1MB입니다.The default size of model is 8 MB (beginning with SQL Server 2016SQL Server 2016) or 1 MB (for earlier versions). 보조 데이터 파일 또는 로그 파일을 지정 하지만 크기 파일을 지정 하지 않으면는 데이터베이스 엔진Database Engine 파일 하 게 8MB (부터는 SQL Server 2016SQL Server 2016) 또는 (이전 버전)의 경우 1MB입니다.When a secondary data file or log file is specified, but size is not specified for the file, the 데이터베이스 엔진Database Engine makes the file 8 MB (beginning with SQL Server 2016SQL Server 2016) or 1 MB (for earlier versions). 주 파일에 지정된 크기는 최소한 model 데이터베이스의 주 파일 크기와 같아야 합니다.The size specified for the primary file must be at least as large as the primary file of the model database.

KB(킬로바이트), MB(메가바이트), GB(기가바이트) 또는 TB(테라바이트) 접미사를 사용할 수 있습니다.The kilobyte (KB), megabyte (MB), gigabyte (GB), or terabyte (TB) suffixes can be used. 기본값은 MB입니다.The default is MB. 소수점이 포함되지 않은 정수를 지정하십시오.Specify a whole number; do not include a decimal. 크기 정수 값입니다.Size is an integer value. 2147483647보다 큰 값에는 더 큰 단위를 사용합니다.For values greater than 2147483647, use larger units.

MAXSIZE max_sizeMAXSIZE max_size
파일이 증가할 수 있는 최대 크기를 지정합니다.Specifies the maximum size to which the file can grow. MAXSIZE 수 없습니다 될 때 지정 되는 os_file_name UNC 경로로 지정 합니다.MAXSIZE cannot be specified when the os_file_name is specified as a UNC path.

max_sizemax_size
최대 파일 크기입니다.Is the maximum file size. KB, MB, GB 및 TB 접미사를 사용할 수 있습니다.The KB, MB, GB, and TB suffixes can be used. 기본값은 MB입니다.The default is MB. 소수점이 포함되지 않은 정수를 지정하십시오.Specify a whole number; do not include a decimal. 경우 max_size 을 지정 하지 않으면 디스크가 꽉 찰 때까지 파일이 증가 합니다.If max_size is not specified, the file grows until the disk is full. Max_size 정수 값입니다.Max_size is an integer value. 2147483647보다 큰 값에는 더 큰 단위를 사용합니다.For values greater than 2147483647, use larger units.

UNLIMITEDUNLIMITED
디스크가 꽉 찰 때까지 파일 크기가 증가하도록 지정합니다.Specifies that the file grows until the disk is full. SQL ServerSQL Server에서 무제한 증가로 지정된 로그 파일의 최대 크기는 2TB이고 데이터 파일의 최대 크기는 16TB입니다.In SQL ServerSQL Server, a log file specified with unlimited growth has a maximum size of 2 TB, and a data file has a maximum size of 16 TB.

참고

이 옵션이 FILESTREAM 컨테이너에 지정되면 최대 크기가 없습니다.There is no maximum size when this option is specified for a FILESTREAM container. 디스크가 꽉 찰 때까지 파일이 증가합니다.It continues to grow until the disk is full.

FILEGROWTH growth_incrementFILEGROWTH growth_increment
파일의 자동 증분을 지정합니다.Specifies the automatic growth increment of the file. 파일의 FILEGROWTH 설정은 MAXSIZE 설정을 초과할 수 없습니다.The FILEGROWTH setting for a file cannot exceed the MAXSIZE setting. FILEGROWTH 수 없습니다 될 때 지정 되는 os_file_name UNC 경로로 지정 합니다.FILEGROWTH cannot be specified when the os_file_name is specified as a UNC path. FILEGROWTH는 FILESTREAM 파일 그룹에 적용되지 않습니다.FILEGROWTH does not apply to a FILESTREAM filegroup.

growth_incrementgrowth_increment
공간이 새로 필요할 때마다 파일에 추가되는 공간 크기입니다.Is the amount of space added to the file every time new space is required.

이 값은 MB, KB, GB, TB 또는 %(퍼센트) 단위로 지정할 수 있습니다.The value can be specified in MB, KB, GB, TB, or percent (%). MB, KB 또는 % 접미사를 붙이지 않고 숫자를 지정하면 MB가 기본값이 됩니다.If a number is specified without an MB, KB, or % suffix, the default is MB. %가 지정되면 증분 크기는 파일 크기 증가가 발생하는 시점에서 해당 파일 크기에 대한 특정 비율입니다.When % is specified, the growth increment size is the specified percentage of the size of the file at the time the increment occurs. 지정 된 크기가 가장 가까운 64 KB로 반올림 됩니다 하 고 최소값은 64KB입니다.The size specified is rounded to the nearest 64 KB, and the minimum value is 64 KB.

값이 0이면 자동 증가가 해제되어 있고 추가 공간이 허용되지 않음을 나타냅니다.A value of 0 indicates that automatic growth is off and no additional space is allowed.

FILEGROWTH를 지정 하지 않으면 기본 값은:If FILEGROWTH is not specified, the default values are:

버전Version 기본값Default values
시작 SQL Server 2016SQL Server 2016Beginning SQL Server 2016SQL Server 2016 데이터 64MB입니다.Data 64 MB. 로그 파일 64MB.Log files 64 MB.
시작 SQL Server 2005SQL Server 2005Beginning SQL Server 2005SQL Server 2005 데이터 1MB입니다.Data 1 MB. 로그 파일 10%입니다.Log files 10%.
이전에 SQL Server 2005SQL Server 2005Prior to SQL Server 2005SQL Server 2005 데이터 10%입니다.Data 10%. 로그 파일 10%입니다.Log files 10%.

<파일 그룹 ><filegroup>
파일 그룹 속성을 제어합니다.Controls the filegroup properties. 데이터베이스 스냅숏에는 파일 그룹을 지정할 수 없습니다.Filegroup cannot be specified on a database snapshot.

파일 그룹 filegroup_nameFILEGROUP filegroup_name
파일 그룹의 논리적 이름입니다.Is the logical name of the filegroup.

filegroup_namefilegroup_name
filegroup_name 데이터베이스에서 고유 해야 하며 시스템에서 제공한 이름인 PRIMARY 및 primary_log 일 수 없습니다.filegroup_name must be unique in the database and cannot be the system-provided names PRIMARY and PRIMARY_LOG. 이 이름은 문자 상수, 유니코드 상수, 일반 식별자 또는 구분 식별자가 될 수 있습니다.The name can be a character or Unicode constant, or a regular or delimited identifier. 이름에 대 한 규칙을 준수 해야 식별자합니다.The name must comply with the rules for identifiers.

CONTAINS FILESTREAMCONTAINS FILESTREAM
파일 그룹이 FILESTREAM BLOB(Binary Large Object)를 파일 시스템에 저장하도록 지정합니다.Specifies that the filegroup stores FILESTREAM binary large objects (BLOBs) in the file system.

CONTAINS MEMORY_OPTIMIZED_DATACONTAINS MEMORY_OPTIMIZED_DATA

적용 대상: SQL Server 2014SQL Server 2014 통해 SQL Server 2017SQL Server 2017Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017

파일 그룹이 memory_optimized 데이터를 파일 시스템에 저장하도록 지정합니다.Specifies that the filegroup stores memory_optimized data in the file system. 자세한 내용은 메모리 내 OLTP(메모리 내 최적화)를 참조하세요.For more information, see In-Memory OLTP (In-Memory Optimization). 데이터베이스당 MEMORY_OPTIMIZED_DATA 파일 그룹이 하나만 허용됩니다.Only one MEMORY_OPTIMIZED_DATA filegroup is allowed per database. 를 메모리 액세스에 최적화 된 데이터를 저장할 파일 그룹을 만들 수 있는 코드 예제를 참조 하십시오. 최적화 된 테이블 및 고유 하 게 컴파일된 저장 프로시저 만들기합니다.For code samples that create a filegroup to store memory-optimized data, see Creating a Memory-Optimized Table and a Natively Compiled Stored Procedure.

DEFAULTDEFAULT
명명한 파일 그룹이 데이터베이스의 기본 파일 그룹임을 지정합니다.Specifies the named filegroup is the default filegroup in the database.

database_snapshot_namedatabase_snapshot_name
새 데이터베이스 스냅숏의 이름입니다.Is the name of the new database snapshot. 데이터베이스 스냅숏 이름은 SQL ServerSQL Server 인스턴스 내에서 고유해야 하며 식별자에 대한 규칙을 따라야 합니다.Database snapshot names must be unique within an instance of SQL ServerSQL Server and comply with the rules for identifiers. database_snapshot_name 최대 128 자가 될 수 있습니다.database_snapshot_name can be a maximum of 128 characters.

ON ( 이름 = logical_file_name, FILENAME =' os_file_name') [ ,... n ]ON ( NAME =logical_file_name, FILENAME ='os_file_name') [ ,... n ]
데이터베이스 스냅숏을 만들기 위해 원본 데이터베이스의 파일 목록을 지정합니다.For creating a database snapshot, specifies a list of files in the source database. 스냅숏이 동작하려면 모든 데이터 파일을 개별적으로 지정해야 합니다.For the snapshot to work, all the data files must be specified individually. 그러나 데이터베이스 스냅숏에는 로그 파일이 허용되지 않습니다.However, log files are not allowed for database snapshots. FILESTREAM 파일 그룹은 데이터베이스 스냅숏에서 지원되지 않습니다.FILESTREAM filegroups are not supported by database snapshots. FILESTREAM 데이터 파일이 CREATE DATABASE ON 절에 포함되어 있으면 문이 실패하고 오류가 발생합니다.If a FILESTREAM data file is included in a CREATE DATABASE ON clause, the statement will fail and an error will be raised.

에 해당 하는 설명은 참조 하는 이름, 파일 이름 및 해당 값에 대 한 설명은 <filespec > 값입니다.For descriptions of NAME and FILENAME and their values see the descriptions of the equivalent <filespec> values.

참고

다른 데이터베이스 스냅숏을 만들 때 <filespec > 옵션 및 PRIMARY 키워드는 허용 되지 않습니다.When you create a database snapshot, the other <filespec> options and the keyword PRIMARY are disallowed.

AS SNAPSHOT OF source_database_nameAS SNAPSHOT OF source_database_name
생성 중인 데이터베이스에서 지정한 원본 데이터베이스의 데이터베이스 스냅숏의 임을 지정 source_database_name합니다.Specifies that the database being created is a database snapshot of the source database specified by source_database_name. 스냅숏 및 원본 데이터베이스는 같은 인스턴스에 있어야 합니다.The snapshot and source database must be on the same instance.

자세한 내용은 주의 사항 섹션의 "데이터베이스 스냅숏"을 참조하십시오.For more information, see "Database Snapshots" in the Remarks section.

주의Remarks

master 데이터베이스 백업 해야 사용자 데이터베이스 생성, 수정 또는 삭제 될 때마다 합니다.The master database should be backed up whenever a user database is created, modified, or dropped.

CREATE DATABASE 문은 기본 트랜잭션 관리 모드인 자동 커밋 모드에서 실행해야 하며 명시적 또는 암시적 트랜잭션에서는 허용되지 않습니다.The CREATE DATABASE statement must run in autocommit mode (the default transaction management mode) and is not allowed in an explicit or implicit transaction.

CREATE DATABASE 문 하나를 사용하여 데이터베이스 및 해당 데이터베이스를 저장하는 파일을 만들 수 있습니다.You can use one CREATE DATABASE statement to create a database and the files that store the database. SQL ServerSQL Server에서는 다음과 같은 단계로 CREATE DATABASE 문을 구현합니다. implements the CREATE DATABASE statement by using the following steps:

  1. SQL ServerSQL Server 의 복사본을 사용 하 여 model 데이터베이스 데이터베이스 및 해당 메타 데이터를 초기화 합니다.The SQL ServerSQL Server uses a copy of the model database to initialize the database and its metadata.

  2. 데이터베이스에 Service Broker GUID가 할당됩니다.A service broker GUID is assigned to the database.

  3. 데이터베이스 엔진Database Engine에서 데이터베이스 내의 공간 사용 방법을 기록하는 내부 데이터가 포함된 페이지를 제외하고 데이터베이스의 나머지 부분을 빈 페이지로 채웁니다.The 데이터베이스 엔진Database Engine then fills the rest of the database with empty pages, except for pages that have internal data that records how the space is used in the database.

    하나의 SQL ServerSQL Server인스턴스당 최대 32,767개의 데이터베이스를 지정할 수 있습니다.A maximum of 32,767 databases can be specified on an instance of SQL ServerSQL Server.

    각 데이터베이스에는 해당 데이터베이스에서 특수한 작업을 수행할 수 있는 소유자가 있습니다.Each database has an owner that can perform special activities in the database. 소유자는 데이터베이스를 만든 사용자입니다.The owner is the user that creates the database. 사용 하 여 데이터베이스 소유자를 변경할 수 있습니다 sp_changedbowner합니다.The database owner can be changed by using sp_changedbowner.

기능에 종속 된 일부 데이터베이스 기능 또는 기능 데이터베이스의 전체 기능에 대 한 파일 시스템에 존재 합니다.Some database features depend on features or capabilities present in the file system for full functionality of a database. 파일 시스템 기능 집합에 종속 된 기능 중 몇 가지 예는 다음과 같습니다.Some examples of features that depend on file system feature set include:

  • DBCC CHECKDBDBCC CHECKDB
  • FileStreamFileStream
  • 파일 및 VSS 스냅숏을 사용 하 여 온라인 백업Online backups using VSS and file snapshots
  • 데이터베이스 스냅숏 만들기Database snapshot creation
  • 메모리 액세스에 최적화 된 데이터 파일 그룹Memory Optimized Data filegroup

데이터베이스 파일 및 파일 그룹Database Files and Filegroups

모든 데이터베이스에 두 개 이상의 파일에는 주 파일트랜잭션 로그 파일, 및 하나 이상의 파일 그룹입니다.Every database has at least two files, a primary file and a transaction log file, and at least one filegroup. 각 데이터베이스에 최대 32,767개의 파일과 32,767개의 파일 그룹을 지정할 수 있습니다.A maximum of 32,767 files and 32,767 filegroups can be specified for each database.

데이터베이스를 만들 때는 데이터베이스에서 예상되는 최대 데이터 크기를 고려하여 데이터 파일을 가능한 한 크게 만드는 것이 좋습니다.When you create a database, make the data files as large as possible based on the maximum amount of data you expect in the database

SQL ServerSQL Server의 성능과 안정성을 최적화하는 구성을 위해 SAN(저장 영역 네트워크), iSCSI 기반 네트워크 또는 로컬로 연결된 디스크에 SQL ServerSQL Server 데이터베이스 파일을 저장하는 것이 좋습니다.We recommend that you use a Storage Area Network (SAN), iSCSI-based network, or locally attached disk for the storage of your SQL ServerSQL Server database files, because this configuration optimizes SQL ServerSQL Server performance and reliability.

데이터베이스 스냅숏Database Snapshots

CREATE DATABASE 문을 사용 하 여 읽기 전용, 정적 보기를 만들 수는 데이터베이스 스냅숏을원본 데이터베이스합니다.You can use the CREATE DATABASE statement to create a read-only, static view, a database snapshot of the source database. 데이터베이스 스냅숏은 스냅숏을 만들었을 당시의 원본 데이터베이스와 트랜잭션 측면에서 일관성을 가집니다.A database snapshot is transactionally consistent with the source database as it existed at the time when the snapshot was created. 원본 데이터베이스 하나에 스냅숏이 여러 개 있을 수 있습니다.A source database can have multiple snapshots.

참고

데이터베이스 스냅숏을 만드는 경우 CREATE DATABASE 문은 로그 파일, 오프라인 파일, 복원 파일 및 존재하지 않는 파일을 참조할 수 없습니다.When you create a database snapshot, the CREATE DATABASE statement cannot reference log files, offline files, restoring files, and defunct files.

데이터베이스 스냅숏 만들기에 실패한 경우 해당 스냅숏은 주의 대상이 되며 삭제해야 합니다.If creating a database snapshot fails, the snapshot becomes suspect and must be deleted. 자세한 내용은 참조 DROP database( Transact SQL ) .For more information, see DROP DATABASE (Transact-SQL).

각 스냅숏은 DROP DATABASE를 사용하여 삭제할 때까지 그대로 유지됩니다.Each snapshot persists until it is deleted by using DROP DATABASE.

자세한 내용은 데이터베이스 스냅숏(SQL Server)을 참조하세요.For more information, see Database Snapshots (SQL Server).

데이터베이스 옵션Database Options

데이터베이스를 만들 때마다 몇 가지 데이터베이스 옵션이 자동으로 설정됩니다.Several database options are automatically set whenever you create a database. 이러한 옵션의 목록에 대 한 참조 ALTER DATABASE SET 옵션 ( Transact SQL ) .For a list of these options, see ALTER DATABASE SET Options (Transact-SQL).

새 데이터베이스 만들기 및 model 데이터베이스The model Database and Creating New Databases

모든 사용자 정의 개체는 model 데이터베이스 새로 만든 데이터베이스로 복사 됩니다.All user-defined objects in the model database are copied to all newly created databases. 테이블, 뷰, 저장 프로시저, 데이터 형식 등의 모든 개체를 model 데이터베이스에 추가하여 새로 만든 모든 데이터베이스에 포함할 수 있습니다.You can add any objects, such as tables, views, stored procedures, data types, and so on, to the model database to be included in all newly created databases.

CREATE database database_name 문이 추가 크기 매개 변수 없이 지정 된 주 데이터 파일은 model 데이터베이스에는 주 파일과 크기가 같은 이루어집니다.When a CREATE DATABASE database_name statement is specified without additional size parameters, the primary data file is made the same size as the primary file in the model database.

FOR ATTACH를 지정하지 않은 경우 모든 새 데이터베이스는 model 데이터베이스에서 데이터베이스 옵션 설정을 상속합니다.Unless FOR ATTACH is specified, each new database inherits the database option settings from the model database. 데이터베이스 옵션 자동 축소로 설정 하는 예를 들어 true 만드는 모든 새 데이터베이스 및 모델에 있습니다.For example, the database option auto shrink is set to true in model and in any new databases you create. model 데이터베이스에서 옵션을 변경하면 새로 만드는 모든 데이터베이스에 이러한 새 옵션 설정이 사용됩니다.If you change the options in the model database, these new option settings are used in any new databases you create. 기존 데이터베이스는 model 데이터베이스 변경 내용의 영향을 받지 않습니다.Changing operations in the model database does not affect existing databases. CREATE DATABASE 문에 FOR ATTACH를 지정하는 경우 새 데이터베이스는 원본 데이터베이스의 데이터베이스 옵션 설정을 상속합니다.If FOR ATTACH is specified on the CREATE DATABASE statement, the new database inherits the database option settings of the original database.

데이터베이스 정보 보기Viewing Database Information

카탈로그 뷰, 시스템 함수 및 시스템 저장 프로시저를 사용하여 데이터베이스, 파일 및 파일 그룹에 대한 정보를 반환할 수 있습니다.You can use catalog views, system functions, and system stored procedures to return information about databases, files, and filegroups. 자세한 내용은 시스템 뷰(Transact-SQL)를 참조하세요.For more information, see System Views (Transact-SQL).

PermissionsPermissions

CREATE DATABASE, CREATE ANY DATABASE 또는 ALTER ANY DATABASE 권한이 필요합니다.Requires CREATE DATABASE, CREATE ANY DATABASE, or ALTER ANY DATABASE permission.

SQL ServerSQL Server인스턴스의 디스크 사용을 제어하기 위해 일반적으로 데이터베이스를 만들 수 있는 사용 권한은 일부 로그인 계정으로 제한됩니다.To maintain control over disk use on an instance of SQL ServerSQL Server, permission to create databases is typically limited to a few login accounts.

다음 예에서는 데이터베이스 사용자 Fay에게 데이터베이스를 만들 수 있는 권한을 제공합니다.The following example provides the permission to create a database to the database user Fay.

USE master;  
GO  
GRANT CREATE DATABASE TO [Fay];  
GO  

데이터 및 로그 파일에 대한 사용 권한Permissions on Data and Log Files

SQL ServerSQL Server에서는 각 데이터베이스의 데이터 및 로그 파일에 특정 사용 권한이 설정됩니다.In SQL ServerSQL Server, certain permissions are set on the data and log files of each database. 데이터베이스에 다음 작업이 적용될 때마다 다음과 같은 사용 권한이 설정됩니다.The following permissions are set whenever the following operations are applied to a database:

만든 날짜Created 새 파일을 추가하기 위해 수정됨Modified to add a new file
연결Attached 백업Backed up
분리Detached 복원Restored

이러한 사용 권한을 설정하면 누구나 액세스할 수 있는 디렉터리에 있는 파일이 실수로 변경되는 것을 방지할 수 있습니다.The permissions prevent the files from being accidentally tampered with if they reside in a directory that has open permissions.

참고

MicrosoftMicrosoft SQL Server 2005 Express EditionSQL Server 2005 Express Edition에서는 데이터 및 로그 파일 사용 권한을 설정하지 않습니다. SQL Server 2005 Express EditionSQL Server 2005 Express Edition does not set data and log file permissions.

Examples

1.A. 파일을 지정하지 않고 데이터베이스 만들기Creating a database without specifying files

다음 예에서는 mytest 데이터베이스를 만들고 해당 주 파일 및 트랜잭션 로그 파일을 만듭니다.The following example creates the database mytest and creates a corresponding primary and transaction log file. 명령문에 아니요 <filespec > 항목을 주 데이터베이스 파일은 model 데이터베이스 주 파일의 크기입니다.Because the statement has no <filespec> items, the primary database file is the size of the model database primary file. 트랜잭션 로그가 더 큰 하도록 설정 되어 다음이 값 중: 25% 또는 512KB 주 데이터 파일의 크기입니다.The transaction log is set to the larger of these values: 512KB or 25% the size of the primary data file. MAXSIZE를 지정하지 않았으므로 사용 가능한 디스크 공간을 모두 채울 때까지 파일 크기가 증가할 수 있습니다.Because MAXSIZE is not specified, the files can grow to fill all available disk space. 이 예에서는 mytest 데이터베이스를 만들기 전에 mytest라는 데이터베이스(있는 경우)를 삭제하는 방법도 보여 줍니다.This example also demonstrates how to drop the database named mytest if it exists, before creating the mytest database.

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  

2.B. 데이터 파일 및 트랜잭션 로그 파일을 지정하는 데이터베이스 만들기Creating a database that specifies the data and transaction log files

다음 예에서는 Sales 데이터베이스를 만듭니다.The following example creates the database Sales. 첫 번째 파일이 주 파일 그룹은 하지 키워드 사용 하기 때문에 (Sales_dat) 주 파일이 됩니다.Because the keyword PRIMARY is not used, the first file (Sales_dat) becomes the primary file. Sales_dat 파일의 SIZE 매개 변수에 MB 또는 KB를 지정하지 않았으므로 기본값 MB를 사용하여 할당됩니다.Because neither MB nor KB is specified in the SIZE parameter for the Sales_dat file, it uses MB and is allocated in megabytes. 사용자 데이터베이스를 생성, 수정 또는 삭제할 때마다 Sales_log 파일은 MB 매개 변수에 명시적으로 SIZE 접미사를 지정했으므로 메가바이트(MB)로 공간이 할당됩니다.The Sales_log file is allocated in megabytes because the MB suffix is explicitly stated in the SIZE parameter.

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 = 5MB,  
    MAXSIZE = 25MB,  
    FILEGROWTH = 5MB ) ;  
GO  

3.C. 데이터 파일 및 트랜잭션 로그 파일을 여러 개 지정하여 데이터베이스 만들기Creating a database by specifying multiple data and transaction log files

다음 예에서는 3개의 Archive 데이터 파일과 2개의 100-MB 트랜잭션 로그 파일을 가진 100-MB 데이터베이스를 만듭니다.The following example creates the database Archive that has three 100-MB data files and two 100-MB transaction log files. 주 파일은 목록의 첫 번째 파일이며 PRIMARY 키워드로 명시적으로 지정되어 있습니다.The primary file is the first file in the list and is explicitly specified with the PRIMARY keyword. 트랜잭션 로그 파일은 LOG ON 키워드 다음에 지정됩니다.The transaction log files are specified following the LOG ON keywords. FILENAME 옵션에서 파일에 사용된 확장명에 유의하십시오. 주 데이터 파일에는 .mdf, 보조 데이터 파일에는 .ndf, 트랜잭션 로그 파일에는 .ldf가 각각 사용됩니다.Note the extensions used for the files in the FILENAME option: .mdf is used for primary data files, .ndf is used for the secondary data files, and .ldf is used for transaction log files. 이 예에서는 데이터베이스를 D: 데이터베이스와 함께 배치하는 대신 master 드라이브에 배치합니다.This example places the database on the D: drive instead of with the master database.

USE master;  
GO  
CREATE DATABASE Archive   
ON  
PRIMARY    
    (NAME = Arch1,  
    FILENAME = 'D:\SalesData\archdat1.mdf',  
    SIZE = 100MB,  
    MAXSIZE = 200,  
    FILEGROWTH = 20),  
    ( NAME = Arch2,  
    FILENAME = 'D:\SalesData\archdat2.ndf',  
    SIZE = 100MB,  
    MAXSIZE = 200,  
    FILEGROWTH = 20),  
    ( NAME = Arch3,  
    FILENAME = 'D:\SalesData\archdat3.ndf',  
    SIZE = 100MB,  
    MAXSIZE = 200,  
    FILEGROWTH = 20)  
LOG ON   
   (NAME = Archlog1,  
    FILENAME = 'D:\SalesData\archlog1.ldf',  
    SIZE = 100MB,  
    MAXSIZE = 200,  
    FILEGROWTH = 20),  
   (NAME = Archlog2,  
    FILENAME = 'D:\SalesData\archlog2.ldf',  
    SIZE = 100MB,  
    MAXSIZE = 200,  
    FILEGROWTH = 20) ;  
GO  

4.D. 파일 그룹이 있는 데이터베이스 만들기Creating a database that has filegroups

다음 예에서는 아래에 나열된 파일 그룹을 포함하는 Sales 데이터베이스를 만듭니다.The following example creates the database Sales that has the following filegroups:

  • 파일에는 주 파일 그룹 Spri1_datSpri2_dat합니다.The primary filegroup with the files Spri1_dat and Spri2_dat. 이러한 파일의 FILEGROWTH 증가분은 15%로 지정됩니다.The FILEGROWTH increments for these files are specified as 15%.

  • SalesGroup1SGrp1Fi1 파일을 포함하는 SGrp1Fi2 파일 그룹A filegroup named SalesGroup1 with the files SGrp1Fi1 and SGrp1Fi2.

  • SalesGroup2SGrp2Fi1 파일을 포함하는 SGrp2Fi2 파일 그룹A filegroup named SalesGroup2 with the files SGrp2Fi1 and SGrp2Fi2.

    이 예에서는 성능을 향상시키기 위해 데이터 파일과 로그 파일을 서로 다른 디스크에 배치합니다.This example places the data and log files on different disks to improve performance.

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 = 5MB,  
    MAXSIZE = 25MB,  
    FILEGROWTH = 5MB ) ;  
GO  

5.E. 데이터베이스 연결Attaching a database

다음 예에서는 예 4에서 만든 Archive 데이터베이스를 분리한 다음, FOR ATTACH 절을 사용하여 데이터베이스를 연결합니다.The following example detaches the database Archive created in example D, and then attaches it by using the FOR ATTACH clause. Archive는 데이터 파일과 로그 파일을 여러 개 포함하도록 정의되었습니다.Archive was defined to have multiple data and log files. 그러나 파일을 만든 후 위치를 변경하지 않았으므로 FOR ATTACH 절에 주 파일만 지정해야 합니다.However, because the location of the files has not changed since they were created, only the primary file has to be specified in the FOR ATTACH clause. SQL Server 2005SQL Server 2005부터는 연결 중인 데이터베이스에 속한 모든 전체 텍스트 파일이 데이터베이스에 연결됩니다.Beginning with SQL Server 2005SQL Server 2005, any full-text files that are part of the database that is being attached will be attached with the database.

USE master;  
GO  
sp_detach_db Archive;  
GO  
CREATE DATABASE Archive  
      ON (FILENAME = 'D:\SalesData\archdat1.mdf')   
      FOR ATTACH ;  
GO  

6.F. 데이터베이스 스냅숏 만들기Creating a database snapshot

다음 예에서는 데이터베이스 스냅숏을 만드는 sales_snapshot0600합니다.The following example creates the database snapshot sales_snapshot0600. 데이터베이스 스냅숏은 읽기 전용이므로 로그 파일을 지정할 수 없습니다.Because a database snapshot is read-only, a log file cannot be specified. 구문에 맞게 원본 데이터베이스의 모든 파일을 지정하며 파일 그룹은 지정하지 않습니다.In conformance with the syntax, every file in the source database is specified, and filegroups are not specified.

이 예의 원본 데이터베이스는 예 4에서 만든 Sales 데이터베이스입니다.The source database for this example is the Sales database created in example D.

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  

7.G. 데이터베이스 만들기 및 데이터 정렬 이름과 옵션 지정Creating a database and specifying a collation name and options

다음 예에서는 MyOptionsTest 데이터베이스를 만듭니다.The following example creates the database MyOptionsTest. 데이터 정렬 이름을 지정하고 TRUSTYWORTHYDB_CHAINING 옵션을 ON으로 설정합니다.A collation name is specified and the TRUSTYWORTHY and DB_CHAINING options are set to 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  

8.H. 이동된 전체 텍스트 카탈로그 연결Attaching a full-text catalog that has been moved

다음 예에서는 AdvWksFtCat 전체 텍스트 카탈로그를 AdventureWorks2012 데이터 및 로그 파일과 연결합니다.The following example attaches the full-text catalog AdvWksFtCat along with the AdventureWorks2012 data and log files. 이 예에서는 전체 텍스트 카탈로그를 기본 위치에서 새 위치 c:\myFTCatalogs로 이동하고In this example, the full-text catalog is moved from its default location to a new location c:\myFTCatalogs. 데이터 및 로그 파일은 기본 위치에 그대로 남아 있습니다.The data and log files remain in their default locations.

USE master;  
GO  
--Detach the AdventureWorks2012 database  
sp_detach_db AdventureWorks2012;  
GO  
-- Physically move the full text catalog to the new location.  
--Attach the AdventureWorks2012 database and specify the new location of the full-text catalog.  
CREATE DATABASE AdventureWorks2012 ON   
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_data.mdf'),   
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf'),  
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')  
FOR ATTACH;  
GO  

9.I. 행 파일 그룹 하나와 FILESTREAM 파일 그룹 두 개를 지정하는 데이터베이스 만들기Creating a database that specifies a row filegroup and two FILESTREAM filegroups

다음 예에서는 FileStreamDB 데이터베이스를 만듭니다.The following example creates the FileStreamDB database. 이 데이터베이스에는 행 파일 그룹 하나와 FILESTREAM 파일 그룹 두 개가 있습니다.The database is created with one row filegroup and two FILESTREAM filegroups. 각 파일 그룹에는 다음과 같이 하나의 파일이 포함됩니다.Each filegroup contains one file:

  • FileStreamDB_data는 행 데이터를 포함합니다.FileStreamDB_data contains row data. 여기에는 기본 경로가 지정된 FileStreamDB_data.mdf 파일 하나가 포함됩니다.It contains one file, FileStreamDB_data.mdf with the default path.

  • FileStreamPhotos는 FILESTREAM 데이터를 포함합니다.FileStreamPhotos contains FILESTREAM data. 여기에는 두 개의 FILESTREAM 데이터 컨테이너가 포함됩니다. 하나는 FSPhotos에 있는 C:\MyFSfolder\Photos이고 다른 하나는 FSPhotos2에 있는 D:\MyFSfolder\Photos입니다.It contains two FILESTREAM data containers, FSPhotos, located at C:\MyFSfolder\Photos and FSPhotos2, located at D:\MyFSfolder\Photos. 이 그룹은 기본 FILESTREAM 파일 그룹으로 표시됩니다.It is marked as the default FILESTREAM filegroup.

  • FileStreamResumes는 FILESTREAM 데이터를 포함합니다.FileStreamResumes contains FILESTREAM data. 여기에는 FSResumes에 있는 FILESTREAM 데이터 컨테이너 C:\MyFSfolder\Resumes가 포함됩니다.It contains one FILESTREAM data container, FSResumes, located at C:\MyFSfolder\Resumes.

USE master;  
GO  
-- Get the SQL Server data path.  
DECLARE @data_path 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 = 10MB  
    ,MAXSIZE = 50MB  
    ,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 will be 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 = 5MB  
    ,MAXSIZE = 25MB  
    ,FILEGROWTH = 5MB  
    )'  
);  
GO  

10.J. 여러 파일이 포함된 FILESTREAM 파일 그룹이 있는 데이터베이스 만들기Creating a database that has a FILESTREAM filegroup with multiple files

다음 예에서는 BlobStore1 데이터베이스를 만듭니다.The following example creates the BlobStore1 database. 이 데이터베이스에는 행 파일 그룹 하나와 FILESTREAM 파일 그룹 하나(FS)가 있습니다.The database is created with one row filegroup and one FILESTREAM filegroup, FS. FILESTREAM 파일 그룹에는 두 개의 파일(FS1FS2)이 포함됩니다.The FILESTREAM filegroup contains two files, FS1 and FS2. 그런 다음 세 번째 파일(FS3)을 FILESTREAM 파일 그룹에 추가하여 데이터베이스를 변경합니다.Then the database is altered by adding a third file, FS3, to the FILESTREAM filegroup.

USE master;  
GO  

CREATE DATABASE [BlobStore1]  
CONTAINMENT = NONE  
ON PRIMARY   
(   
    NAME = N'BlobStore1',   
    FILENAME = N'C:\BlobStore\BlobStore1.mdf',  
    SIZE = 100MB,  
    MAXSIZE = UNLIMITED,  
    FILEGROWTH = 1MB  
),   
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT   
(  
    NAME = N'FS1',  
    FILENAME = N'C:\BlobStore\FS1',  
    MAXSIZE = UNLIMITED  
),   
(  
    NAME = N'FS2',  
    FILENAME = N'C:\BlobStore\FS2',  
    MAXSIZE = 100MB  
)  
LOG ON   
(  
    NAME = N'BlobStore1_log',  
    FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',  
    SIZE = 100MB,  
    MAXSIZE = 1GB,  
    FILEGROWTH = 1MB  
);  
GO  

ALTER DATABASE [BlobStore1]  
ADD FILE  
(  
    NAME = N'FS3',  
    FILENAME = N'C:\BlobStore\FS3',  
    MAXSIZE = 100MB  
)  
TO FILEGROUP [FS];  
GO  

관련 항목:See Also

ALTER DATABASE(Transact-SQL) ALTER DATABASE (Transact-SQL)
데이터베이스 분리 및 연결(SQL Server) Database Detach and Attach (SQL Server)
DROP DATABASE(Transact-SQL) DROP DATABASE (Transact-SQL)
EVENTDATA(Transact-SQL) EVENTDATA (Transact-SQL)
sp_changedbowner ( Transact SQL ) sp_changedbowner (Transact-SQL)
sp_detach_db( Transact SQL ) sp_detach_db (Transact-SQL)
s p _ ( Transact SQL ) sp_removedbreplication (Transact-SQL)
데이터베이스 스냅숏(SQL Server) Database Snapshots (SQL Server)
데이터베이스 파일 이동 Move Database Files
데이터베이스 Databases
Blob(Binary Large Object) 데이터(SQL Server)Binary Large Object (Blob) Data (SQL Server)