ALTER DATABASE(Transact-SQL)ALTER DATABASE (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

데이터베이스 또는 데이터베이스와 연관된 파일 및 파일 그룹을 수정합니다.Modifies a database, or the files and filegroups associated with the database. 데이터베이스의 파일 및 파일 그룹 추가 또는 제거, 데이터베이스 또는 데이터베이스 내 파일 및 파일 그룹 특성 변경, 데이터베이스 데이터 정렬 변경 및 데이터베이스 옵션 설정을 수행합니다.Adds or removes files and filegroups from a database, changes the attributes of a database or its files and filegroups, changes the database collation, and sets database options. 데이터베이스 스냅숏은 수정할 수 없습니다.Database snapshots cannot be modified. 복제와 관련 된 데이터베이스 옵션을 수정 하려면 사용 하 여 sp_replicationdboption합니다.To modify database options associated with replication, use sp_replicationdboption.

ALTER DATABASE 구문은 설명할 항목이 많기 때문에 다음 항목으로 구분하여 설명됩니다.Because of its length, the ALTER DATABASE syntax is separated into the following topics:

ALTER DATABASEALTER DATABASE
현재 항목은 데이터베이스의 이름 및 데이터 정렬 변경을 위한 구문을 제공합니다.The current topic provides the syntax for changing the name and the collation of a database.

ALTER DATABASE 파일 및 파일 그룹 옵션ALTER DATABASE File and Filegroup Options
데이터베이스의 파일과 파일 그룹을 추가 및 제거하고 파일과 파일 그룹의 특성을 변경하기 위한 구문을 제공합니다.Provides the syntax for adding and removing files and filegroups from a database, and for changing the attributes of the files and filegroups.

ALTER DATABASE SET 옵션ALTER DATABASE SET Options
ALTER DATABASE의 SET 옵션을 사용하여 데이터베이스의 특성을 변경하기 위한 구문을 제공합니다.Provides the syntax for changing the attributes of a database by using the SET options of ALTER DATABASE.

ALTER DATABASE 데이터베이스 미러링ALTER DATABASE Database Mirroring
데이터베이스 미러링과 관련된 ALTER DATABASE의 SET 옵션에 대한 구문을 제공합니다.Provides the syntax for the SET options of ALTER DATABASE that are related to database mirroring.

ALTER DATABASE SET HADRALTER DATABASE SET HADR
에 대 한 구문을 제공는 Always On 가용성 그룹Always On availability groups Always On 가용성 그룹의 보조 복제본에서 보조 데이터베이스를 구성 하기 위한 ALTER DATABASE의 옵션입니다.Provides the syntax for the Always On 가용성 그룹Always On availability groups options of ALTER DATABASE for configuring a secondary database on a secondary replica of an Always On availability group.

ALTER DATABASE 호환성 수준ALTER DATABASE Compatibility Level
데이터베이스 호환성 수준과 관련된 ALTER DATABASE의 SET 옵션에 대한 구문을 제공합니다.Provides the syntax for the SET options of ALTER DATABASE that are related to database compatibility levels.

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

Azure SQL 데이터베이스에 대 한 참조 ALTER database( Azure SQL 데이터베이스 )For Azure SQL Database, see ALTER DATABASE (Azure SQL Database)
Azure SQL 데이터 웨어하우스를 참조 하세요. ALTER database( Azure SQL 데이터 웨어하우스 ) .For Azure SQL Data Warehouse, see ALTER DATABASE (Azure SQL Data Warehouse).
병렬 데이터 웨어하우스에 대 한 참조 ALTER database( 병렬 데이터 웨어하우스 ) .For Parallel Data Warehouse, see ALTER DATABASE (Parallel Data Warehouse).

구문Syntax

-- SQL Server Syntax  
ALTER DATABASE { database_name  | CURRENT }  
{  
    MODIFY NAME = new_database_name   
  | COLLATE collation_name  
  | <file_and_filegroup_options>  
  | <set_database_options>  
}  
[;]  

<file_and_filegroup_options >::=  
  <add_or_modify_files>::=  
  <filespec>::=   
  <add_or_modify_filegroups>::=  
  <filegroup_updatability_option>::=  

<set_database_options>::=  
  <optionspec>::=   
  <auto_option> ::=   
  <change_tracking_option> ::=  
  <cursor_option> ::=   
  <database_mirroring_option> ::=   
  <date_correlation_optimization_option> ::=  
  <db_encryption_option> ::=  
  <db_state_option> ::=  
  <db_update_option> ::=  
  <db_user_access_option> ::=  <delayed_durability_option> ::=  <external_access_option> ::=  
  <FILESTREAM_options> ::=  
  <HADR_options> ::=    
  <parameterization_option> ::=  
  <query_store_options> ::=  
  <recovery_option> ::=   
  <service_broker_option> ::=  
  <snapshot_option> ::=  
  <sql_option> ::=   
  <termination> ::=  

인수Arguments

database_namedatabase_name
수정할 데이터베이스의 이름입니다.Is the name of the database to be modified.

참고

포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.This option is not available in a Contained Database.

CURRENTCURRENT
적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

현재 사용 중인 데이터베이스를 변경하도록 지정합니다.Designates that the current database in use should be altered.

MODIFY NAME = new_database_nameMODIFY NAME =new_database_name
로 지정 된 이름의 데이터베이스를 이름을 바꿉니다. new_database_name합니다.Renames the database with the name specified as new_database_name.

COLLATE 데이터 정렬 이름COLLATE collation_name
데이터베이스에 대한 데이터 정렬을 지정합니다.Specifies the 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 collation of the instance of SQL ServerSQL Server.

기본 데이터 정렬이 아닌 데이터 정렬로 데이터베이스를 만들 경우 데이터베이스의 데이터는 항상 지정된 데이터 정렬을 따릅니다.When creating databases with other than the default collation, the data in the database always respects the specified collation. 에 대 한 SQL ServerSQL Server, 내부 카탈로그 정보는를 사용 하 여 유지 관리는 포함 된 데이터베이스를 만들 때는 SQL ServerSQL Server 기본 데이터 정렬, Latin1_General_100_CI_AS_WS_KS_SC합니다.For SQL ServerSQL Server, when creating a contained database, the internal catalog information is maintained using the SQL ServerSQL Server default collation, Latin1_General_100_CI_AS_WS_KS_SC.

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

<delayed_durability_option >:: =<delayed_durability_option> ::=
적용 대상: SQL Server 2014SQL Server 2014 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2014SQL Server 2014 through SQL Server 2017SQL Server 2017.

자세한 내용은 참조 하십시오. ALTER DATABASE SET 옵션 ( Transact SQL ) 트랜잭션 내 구성을 제어합니다.For more information see ALTER DATABASE SET Options (Transact-SQL) and Control Transaction Durability.

<file_and_filegroup_options >:: =<file_and_filegroup_options>::=
자세한 내용은 참조 ALTER DATABASE 파일 및 파일 그룹 옵션 ( Transact SQL ) .For more information, see ALTER DATABASE File and Filegroup Options (Transact-SQL).

주의Remarks

사용 하 여 데이터베이스를 제거 하려면 DROP DATABASE합니다.To remove a database, use DROP DATABASE.

사용 하 여 데이터베이스의 크기를 줄이려면 DBCC SHRINKDATABASE합니다.To decrease the size of a database, use DBCC SHRINKDATABASE.

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

데이터베이스 파일의 상태(예: 온라인 또는 오프라인)는 데이터베이스의 상태와는 별도로 유지 관리됩니다.The state of a database file (for example, online or offline), is maintained independently from the state of the database. 자세한 내용은 참조 파일 상태합니다.For more information, see File States. 전체 파일 그룹의 가용성은 파일 그룹 내 파일의 상태에 따라 결정됩니다.The state of the files within a filegroup determines the availability of the whole filegroup. 파일 그룹을 사용하려면 파일 그룹 내의 모든 파일이 온라인 상태여야 합니다.For a filegroup to be available, all files within the filegroup must be online. 파일 그룹이 오프라인 상태인 경우 SQL 문을 사용한 파일 그룹 액세스 시도는 오류가 발생하며 실패하게 됩니다.If a filegroup is offline, any try to access the filegroup by an SQL statement will fail with an error. SELECT 문에 대한 쿼리 계획을 작성할 때 쿼리 최적화 프로그램은 오프라인 파일 그룹에 있는 비클러스터형 인덱스와 인덱싱된 뷰는 피함으로써When you build query plans for SELECT statements, the query optimizer avoids nonclustered indexes and indexed views that reside in offline filegroups. 이러한 문이 성공하도록 합니다.This enables these statements to succeed. 그러나 오프라인 파일 그룹에 대상 테이블의 힙이나 클러스터형 인덱스가 있는 경우 SELECT 문은 실패합니다.However, if the offline filegroup contains the heap or clustered index of the target table, the SELECT statements fail. 오프라인 파일 그룹의 인덱스를 사용하여 테이블을 수정하는 INSERT, UPDATE 또는 DELETE 문도 실패합니다.Additionally, any INSERT, UPDATE, or DELETE statement that modifies a table with any index in an offline filegroup will fail.

데이터베이스가 RESTORING 상태에 있으면 ALTER DATABASE 문이 대부분 실패합니다.When a database is in the RESTORING state, most ALTER DATABASE statements will fail. 단, 데이터베이스 미러링 옵션을 설정하는 경우는 예외입니다.The exception is setting database mirroring options. 활성 복원 작업 중이나 데이터베이스 또는 로그 파일의 복원 작업이 손상된 백업 파일로 인해 실패할 경우 데이터베이스가 RESTORING 상태일 수 있습니다.A database may be in the RESTORING state during an active restore operation or when a restore operation of a database or log file fails because of a corrupted backup file.

SQL ServerSQL Server의 인스턴스에 대한 계획 캐시는 다음 옵션 중 하나를 설정하여 삭제됩니다.The plan cache for the instance of SQL ServerSQL Server is cleared by setting one of the following options.

OFFLINEOFFLINE READ_WRITEREAD_WRITE
ONLINEONLINE MODIFY FILEGROUP DEFAULTMODIFY FILEGROUP DEFAULT
MODIFY_NAMEMODIFY_NAME MODIFY FILEGROUP READ_WRITEMODIFY FILEGROUP READ_WRITE
COLLATECOLLATE MODIFY FILEGROUP READ_ONLYMODIFY FILEGROUP READ_ONLY
READ_ONLYREAD_ONLY PAGE_VERIFYPAGE_VERIFY

계획 캐시를 삭제하면 모든 후속 실행 계획이 다시 컴파일되며 일시적으로 갑자기 쿼리 성능이 저하될 수 있습니다.Clearing the plan cache causes a recompilation of all subsequent execution plans and can cause a sudden, temporary decrease in query performance. 계획 캐시의 삭제된 각 캐시스토어에 대해 SQL ServerSQL Server 오류 로그에 "데이터베이스 유지 관리 또는 재구성 작업으로 인해 '%s' 캐시스토어(계획 캐시의 일부)에 대한 캐시스토어 플러시가 SQL ServerSQL Server에서 %d번 발견되었습니다"라는 정보 메시지가 있습니다.For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log contains the following informational message: " SQL ServerSQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations". 이 메시지는 캐시가 해당 시간 간격 내에 플러시되는 동안 5분마다 기록됩니다.This message is logged every five minutes as long as the cache is flushed within that time interval.

프로시저 캐시는 다음 시나리오에도 플러시됩니다.The procedure cache is also flushed in the following scenarios:

  • 데이터베이스에서 AUTO_CLOSE 데이터베이스 옵션이 ON으로 설정되어 있습니다.A database has the AUTO_CLOSE database option set to ON. 사용자 연결이 데이터베이스를 참조하거나 사용하지 않으면 백그라운드 작업에서 자동으로 데이터베이스를 닫고 종료하려고 합니다.When no user connection references or uses the database, the background task tries to close and shut down the database automatically.

  • 기본 옵션이 있는 데이터베이스에 대해 여러 가지 쿼리를 실행합니다.You run several queries against a database that has default options. 그러면 데이터베이스가 삭제됩니다.Then, the database is dropped.

  • 원본 데이터베이스에 대한 데이터베이스 스냅숏이 삭제됩니다.A database snapshot for a source database is dropped.

  • 데이터베이스에 대한 트랜잭션 로그를 성공적으로 다시 작성합니다.You successfully rebuild the transaction log for a database.

  • 데이터베이스 백업을 복원합니다.You restore a database backup.

  • 데이터베이스를 분리합니다.You detach a database.

데이터베이스 데이터 정렬 변경Changing the Database Collation

데이터베이스에 다른 데이터 정렬을 적용하기 전에 다음 조건이 충족되었는지 확인하세요.Before you apply a different collation to a database, make sure that the following conditions are in place:

  • 현재 데이터베이스를 사용하고 있는 다른 사용자가 없습니다.You are the only one currently using the database.

  • 데이터베이스의 데이터 정렬에 종속된 스키마 바운드 개체가 없습니다.No schema-bound object depends on the collation of the database.

    데이터베이스 데이터 정렬에 의존할 경우에서 다음 개체를 ALTER DATABASE 데이터베이스에 존재 하는 경우database_nameCOLLATE 문은 실패 합니다.If the following objects, which depend on the database collation, exist in the database, the ALTER DATABASEdatabase_nameCOLLATE statement will fail. SQL ServerSQL Server는 ALTER 동작을 차단하는 각 개체에 대해 오류 메시지를 반환합니다. will return an error message for each object blocking the ALTER action:

    • SCHEMABINDING으로 생성된 사용자 정의 함수 및 뷰User-defined functions and views created with SCHEMABINDING.

    • 계산 열Computed columns.

    • CHECK 제약 조건CHECK constraints.

    • 기본 데이터베이스 데이터 정렬에서 상속 받은 데이터 정렬을 사용하는 문자 열이 있는 테이블을 반환하는 테이블 반환 함수Table-valued functions that return tables with character columns with collations inherited from the default database collation.

      비스키마 바운드 엔터티에 대한 종속성 정보는 데이터베이스 데이터 정렬이 변경될 때 자동으로 업데이트됩니다.Dependency information for non-schema-bound entities is automatically updated when the database collation is changed.

    데이터베이스 데이터 정렬을 변경해도 데이터베이스 개체에 대한 시스템 이름이 중복되는 경우는 발생하지 않습니다.Changing the database collation does not create duplicates among any system names for the database objects. 데이터 정렬 변경 시 중복 이름이 발생하면 다음 네임스페이스에서 데이터베이스 데이터 정렬 변경이 실패할 수 있습니다.If duplicate names result from the changed collation, the following namespaces may cause the failure of a database collation change:

  • 개체 이름(프로시저, 테이블, 트리거, 뷰 등)Object names such as a procedure, table, trigger, or view.

  • 스키마 이름.Schema names.

  • 보안 주체(그룹, 역할, 사용자 등)Principals such as a group, role, or user.

  • 스칼라 유형 이름(시스템 및 사용자 정의 유형)Scalar-type names such as system and user-defined types.

  • 전체 텍스트 카탈로그 이름Full-text catalog names.

  • 개체 내의 열 또는 매개 변수 이름Column or parameter names within an object.

  • 테이블 내의 인덱스 이름Index names within a table.

새로운 데이터 정렬로 중복 이름이 생성되는 경우 변경 동작은 실패하게 되며 SQL ServerSQL Server는 중복이 발견된 네임스페이스를 지정하는 오류 메시지를 반환합니다.Duplicate names resulting from the new collation will cause the change action to fail, and SQL ServerSQL Server will return an error message specifying the namespace where the duplicate was found.

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

카탈로그 뷰, 시스템 함수 및 시스템 저장 프로시저를 사용하여 데이터베이스, 파일 및 파일 그룹에 대한 정보를 반환할 수 있습니다.You can use catalog views, system functions, and system stored procedures to return information about databases, files, and filegroups.

PermissionsPermissions

데이터베이스에 대한 ALTER 권한이 필요합니다.Requires ALTER permission on the database.

Examples

1.A. 데이터베이스의 이름 변경Changing the name of a database

다음 예에서는 AdventureWorks2012 데이터베이스의 이름을 Northwind로 변경합니다.The following example changes the name of the AdventureWorks2012 database to Northwind.

USE master;  
GO  
ALTER DATABASE AdventureWorks2012  
Modify Name = Northwind ;  
GO  

2.B. 데이터베이스 데이터 정렬 변경Changing the collation of a database

다음 예에서는 testdbS 데이터 정렬을 사용하여 SQL_Latin1_General_CP1_CI_A라는 데이터베이스를 만든 다음 testdb 데이터베이스의 데이터 정렬을 COLLATE French_CI_AI로 변경합니다.The following example creates a database named testdb with the SQL_Latin1_General_CP1_CI_AS collation, and then changes the collation of the testdb database to COLLATE French_CI_AI.

적용 대상: SQL Server 2008SQL Server 2008 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

USE master;  
GO  

CREATE DATABASE testdb  
COLLATE SQL_Latin1_General_CP1_CI_AS ;  
GO  

ALTER DATABASE testDB  
COLLATE French_CI_AI ;  
GO  

관련 항목:See Also