ALTER DATABASE(Transact-SQL)

 

이 항목은 다음에 적용됩니다.예SQL Server(2008부터 시작)아니요Azure SQL 데이터베이스아니요Azure SQL 데이터 웨어하우스아니요병렬 데이터 웨어하우스

데이터베이스 또는 데이터베이스와 연관된 파일 및 파일 그룹을 수정합니다. 데이터베이스의 파일 및 파일 그룹 추가 또는 제거, 데이터베이스 또는 데이터베이스 내 파일 및 파일 그룹 특성 변경, 데이터베이스 데이터 정렬 변경 및 데이터베이스 옵션 설정을 수행합니다. 데이터베이스 스냅숏은 수정할 수 없습니다. 복제와 관련 된 데이터베이스 옵션을 수정 하려면 사용 하 여 sp_replicationdboption합니다.

ALTER DATABASE 구문은 설명할 항목이 많기 때문에 다음 항목으로 구분하여 설명됩니다.

ALTER DATABASE
현재 항목은 데이터베이스의 이름 및 데이터 정렬 변경을 위한 구문을 제공합니다.

ALTER DATABASE 파일 및 파일 그룹 옵션
데이터베이스의 파일과 파일 그룹을 추가 및 제거하고 파일과 파일 그룹의 특성을 변경하기 위한 구문을 제공합니다.

ALTER DATABASE SET 옵션
ALTER DATABASE의 SET 옵션을 사용하여 데이터베이스의 특성을 변경하기 위한 구문을 제공합니다.

ALTER DATABASE 데이터베이스 미러링
데이터베이스 미러링과 관련된 ALTER DATABASE의 SET 옵션에 대한 구문을 제공합니다.

ALTER DATABASE SET HADR
에 대 한 구문을 제공는 Always On 가용성 그룹 Always On 가용성 그룹의 보조 복제본에서 보조 데이터베이스를 구성 하기 위한 ALTER DATABASE의 옵션입니다.

ALTER DATABASE 호환성 수준
데이터베이스 호환성 수준과 관련된 ALTER DATABASE의 SET 옵션에 대한 구문을 제공합니다.

Topic link icon Transact-SQL 구문 표기 규칙

Azure SQL 데이터베이스에 대 한 참조 ALTER DATABASE ( Azure SQL 데이터베이스 및)

  
      -- 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> ::=  
  

a s e _
수정할 데이터베이스의 이름입니다.

System_CAPS_ICON_note.jpg 참고


포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.

CURRENT

적용 대상: SQL Server 2012 부터 SQL Server 2016까지

현재 사용 중인 데이터베이스를 변경하도록 지정합니다.

MODIFY NAME =new_database_name
로 지정 된 이름의 데이터베이스를 이름을 바꿉니다. new_database_name합니다.

COLLATE 데이터 정렬 이름
데이터베이스에 대한 데이터 정렬을 지정합니다. 데이터 정렬 이름 Windows 데이터 정렬 이름 또는 SQL 데이터 정렬 이름이 될 수 있습니다. 이를 지정하지 않으면 SQL Server 인스턴스의 데이터 정렬이 지정됩니다.

기본 데이터 정렬이 아닌 데이터 정렬로 데이터베이스를 만들 경우 데이터베이스의 데이터는 항상 지정된 데이터 정렬을 따릅니다. 에 대 한 SQL Server, 포함된 된 데이터베이스를 만들 때 내부 카탈로그 정보를 사용 하 여 유지 됩니다는 SQL Server 기본 데이터 정렬 인 Latin1_General_100_CI_AS_WS_KS_SC합니다.

Windows 및 SQL 데이터 정렬 이름에 대 한 자세한 내용은 참조 COLLATE ( TRANSACT-SQL )합니다.

< delayed_durability_option >:: =

적용 대상: SQL Server 2014 부터 SQL Server 2016까지

자세한 내용은 참조 ALTER DATABASE SET 옵션 ( TRANSACT-SQL )트랜잭션 내 구성을 제어합니다.

< file_and_filegroup_options >:: =
자세한 내용은 참조 ALTER DATABASE File 및 파일 그룹 옵션 ( TRANSACT-SQL )합니다.

데이터베이스를 제거 사용 DROP DATABASE합니다.

사용 하 여 데이터베이스의 크기를 줄이려면 DBCC SHRINKDATABASE합니다.

ALTER DATABASE 문은 자동 커밋 모드(기본 트랜잭션 관리 모드)에서 실행되어야 하며 명시적 또는 암시적 트랜잭션에서는 허용되지 않습니다.

데이터베이스 파일의 상태(예: 온라인 또는 오프라인)는 데이터베이스의 상태와는 별도로 유지 관리됩니다. 자세한 내용은 참조 파일 상태합니다. 전체 파일 그룹의 가용성은 파일 그룹 내 파일의 상태에 따라 결정됩니다. 파일 그룹을 사용하려면 파일 그룹 내의 모든 파일이 온라인 상태여야 합니다. 파일 그룹이 오프라인 상태인 경우 SQL 문을 사용한 파일 그룹 액세스 시도는 오류가 발생하며 실패하게 됩니다. SELECT 문에 대한 쿼리 계획을 작성할 때 쿼리 최적화 프로그램은 오프라인 파일 그룹에 있는 비클러스터형 인덱스와 인덱싱된 뷰는 피함으로써 이러한 문이 성공하도록 합니다. 그러나 오프라인 파일 그룹에 대상 테이블의 힙이나 클러스터형 인덱스가 있는 경우 SELECT 문은 실패합니다. 오프라인 파일 그룹의 인덱스를 사용하여 테이블을 수정하는 INSERT, UPDATE 또는 DELETE 문도 실패합니다.

데이터베이스가 RESTORING 상태에 있으면 ALTER DATABASE 문이 대부분 실패합니다. 단, 데이터베이스 미러링 옵션을 설정하는 경우는 예외입니다. 활성 복원 작업 중이나 데이터베이스 또는 로그 파일의 복원 작업이 손상된 백업 파일로 인해 실패할 경우 데이터베이스가 RESTORING 상태일 수 있습니다.

SQL Server의 인스턴스에 대한 계획 캐시는 다음 옵션 중 하나를 설정하여 삭제됩니다.

OFFLINEREAD_WRITE
ONLINEMODIFY FILEGROUP DEFAULT
MODIFY_NAMEMODIFY FILEGROUP READ_WRITE
COLLATEMODIFY FILEGROUP READ_ONLY
READ_ONLYPAGE_VERIFY

계획 캐시를 삭제하면 모든 후속 실행 계획이 다시 컴파일되며 일시적으로 갑자기 쿼리 성능이 저하될 수 있습니다. 계획 캐시의 삭제된 각 캐시스토어에 대해 SQL Server 오류 로그에 "데이터베이스 유지 관리 또는 재구성 작업으로 인해 '%s' 캐시스토어(계획 캐시의 일부)에 대한 캐시스토어 플러시가 SQL Server에서 %d번 발견되었습니다"라는 정보 메시지가 있습니다. 이 메시지는 캐시가 해당 시간 간격 내에 플러시되는 동안&5;분마다 기록됩니다.

프로시저 캐시는 다음 시나리오에도 플러시됩니다.

  • 데이터베이스에서 AUTO_CLOSE 데이터베이스 옵션이 ON으로 설정되어 있습니다. 사용자 연결이 데이터베이스를 참조하거나 사용하지 않으면 백그라운드 작업에서 자동으로 데이터베이스를 닫고 종료하려고 합니다.

  • 기본 옵션이 있는 데이터베이스에 대해 여러 가지 쿼리를 실행합니다. 그러면 데이터베이스가 삭제됩니다.

  • 원본 데이터베이스에 대한 데이터베이스 스냅숏이 삭제됩니다.

  • 데이터베이스에 대한 트랜잭션 로그를 성공적으로 다시 작성합니다.

  • 데이터베이스 백업을 복원합니다.

  • 데이터베이스를 분리합니다.

데이터베이스에 다른 데이터 정렬을 적용하기 전에 다음 조건이 충족되었는지 확인하세요.

  1. 현재 데이터베이스를 사용하고 있는 다른 사용자가 없습니다.

  2. 데이터베이스의 데이터 정렬에 종속된 스키마 바운드 개체가 없습니다.

    다음 개체를 데이터베이스 데이터 정렬에 의존할 경우 ALTER DATABASE는 데이터베이스에 있는 경우database_nameCOLLATE 문은 실패 합니다. SQL Server는 ALTER 동작을 차단하는 각 개체에 대해 오류 메시지를 반환합니다.

    • SCHEMABINDING으로 생성된 사용자 정의 함수 및 뷰

    • 계산 열

    • CHECK 제약 조건

    • 기본 데이터베이스 데이터 정렬에서 상속 받은 데이터 정렬을 사용하는 문자 열이 있는 테이블을 반환하는 테이블 반환 함수

    비스키마 바운드 엔터티에 대한 종속성 정보는 데이터베이스 데이터 정렬이 변경될 때 자동으로 업데이트됩니다.

데이터베이스 데이터 정렬을 변경해도 데이터베이스 개체에 대한 시스템 이름이 중복되는 경우는 발생하지 않습니다. 데이터 정렬 변경 시 중복 이름이 발생하면 다음 네임스페이스에서 데이터베이스 데이터 정렬 변경이 실패할 수 있습니다.

  • 개체 이름(프로시저, 테이블, 트리거, 뷰 등)

  • 스키마 이름.

  • 보안 주체(그룹, 역할, 사용자 등)

  • 스칼라 유형 이름(시스템 및 사용자 정의 유형)

  • 전체 텍스트 카탈로그 이름

  • 개체 내의 열 또는 매개 변수 이름

  • 테이블 내의 인덱스 이름

새로운 데이터 정렬로 중복 이름이 생성되는 경우 변경 동작은 실패하게 되며 SQL Server는 중복이 발견된 네임스페이스를 지정하는 오류 메시지를 반환합니다.

카탈로그 뷰, 시스템 함수 및 시스템 저장 프로시저를 사용하여 데이터베이스, 파일 및 파일 그룹에 대한 정보를 반환할 수 있습니다.

데이터베이스에 대한 ALTER 권한이 필요합니다.

1. 데이터베이스의 이름 변경

다음 예에서는 AdventureWorks2012 데이터베이스의 이름을 Northwind로 변경합니다.

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

2. 데이터베이스 데이터 정렬 변경

다음 예에서는 testdbS 데이터 정렬을 사용하여 SQL_Latin1_General_CP1_CI_A라는 데이터베이스를 만든 다음 testdb 데이터베이스의 데이터 정렬을 COLLATE French_CI_AI로 변경합니다.

적용 대상: SQL Server 2008 부터 SQL Server 2016까지
USE master;  
GO  
  
CREATE DATABASE testdb  
COLLATE SQL_Latin1_General_CP1_CI_AS ;  
GO  
  
ALTER DATABASE testDB  
COLLATE French_CI_AI ;  
GO  

커뮤니티 추가 항목

추가
표시: