다음을 통해 공유


ReadOnly 모드와 ReadWrite 모드 간 Analysis Services 데이터베이스 전환

Analysis Services 데이터베이스 관리자(dba)가 테이블 형식 또는 다차원 데이터베이스의 읽기/쓰기 모드를 변경하려는 경우가 종종 있습니다. 이러한 상황은 더 나은 사용자 환경을 위해 Analysis Services 서버 풀 간에 데이터베이스를 공유하는 등 비즈니스 요구 사항에 따라 발생하는 경우가 많습니다.

데이터베이스 모드는 여러 가지 방법으로 전환할 수 있습니다. 이 문서에서는 다음과 같은 일반적인 시나리오를 설명합니다.

  • SQL Server Management Studio를 대화형으로 사용

  • 프로그래밍 방식으로 AMO 사용

  • XMLA를 사용하는 스크립트로

절차

Management Studio를 사용하여 대화형으로 데이터베이스의 읽기/쓰기 모드를 전환하려면

  1. Management Studio의 왼쪽 또는 오른쪽 창에서 전환할 데이터베이스를 찾습니다.

  2. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 데이터베이스 폴더를 찾아 위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.

    Important

    데이터베이스가 분리되는 즉시 Management Studio는 더 이상 데이터베이스 위치를 가져오는 데 도움이 되지 않습니다.

  3. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 분리...를 선택합니다 .

  4. 분리되는 데이터베이스에 암호를 할당한 후 확인 을 클릭하여 분리 명령을 실행합니다.

  5. Management Studio의 왼쪽 또는 오른쪽 창에서 데이터베이스 폴더를 찾습니다.

  6. 데이터베이스 폴더를 마우스 오른쪽 단추로 클릭하고 연결...을 선택합니다.

  7. 폴더 입력란에 데이터베이스 폴더의 원래 위치를 입력합니다. 또는 찾아보기 단추(...)를 사용하여 데이터베이스 폴더를 찾을 수 있습니다.

  8. 데이터베이스의 읽기/쓰기 모드를 선택합니다.

  9. 3단계에서 사용된 암호를 입력하고 확인을 클릭하여 연결 명령을 실행합니다.

AMO를 사용하여 데이터베이스의 읽기/쓰기 모드를 프로그래밍 방식으로 전환하려면

  1. C# 애플리케이션에 다음 예제 코드를 적용하고 표시되는 태스크를 완료합니다.

private void SwitchReadWrite(Server server, string dbName,

ReadWriteMode dbReadWriteMode)

{

if (server.Databases.ContainsName(dbName))

{

Database db;

string databaseLocation;

db = server.Databases[dbName];

databaseLocation = db.DbStorageLocation;

if (databaseLocation == null)

{

string dataDir = server.ServerProperties["DataDir"].Value;

String[] possibleFolders = Directory.GetDirectories(dataDir, string.Concat(dbName,"*"), SearchOption.TopDirectoryOnly);

if (possibleFolders.Length > 1)

{

List<String> sortedFolders = new List<string>(possibleFolders.Length);

sortedFolders.AddRange(possibleFolders);

sortedFolders.Sort();

databaseLocation = sortedFolders[sortedFolders.Count - 1];

}

else

{

databaseLocation = possibleFolders[0];

}

}

db.Detach();

server.Attach(databaseLocation, dbReadWriteMode);

}

}

  1. C# 애플리케이션에서 필요한 매개 변수를 사용하여 호출 SwitchReadWrite() 합니다.

  2. 코드를 컴파일하고 실행하여 데이터베이스를 이동합니다.

XMLA를 사용하여 스크립트로 데이터베이스의 읽기/쓰기 모드를 전환하려면

  1. Management Studio의 왼쪽 또는 오른쪽 창에서 전환할 데이터베이스를 찾습니다.

  2. 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 데이터베이스 폴더를 찾아 위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.

    Important

    데이터베이스가 분리되는 즉시 Management Studio는 더 이상 데이터베이스 위치를 가져오는 데 도움이 되지 않습니다.

  3. Management Studio에서 새 XMLA 탭을 엽니다.

  4. XMLA에 대해 다음 스크립트 템플릿을 복사합니다.

<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<Object>

<DatabaseID>%dbName%</DatabaseID>

<Password>%password%</Password>

</Object>

</Detach>

  1. %dbName% 은 데이터베이스 이름으로 대체하고 %password% 는 암호로 대체합니다. % 문자는 템플릿의 일부이며 제거해야 합니다.

  2. XMLA 명령을 실행합니다.

  3. 다음 XMLA 스크립트 템플릿을 새 XMLA 탭에 복사합니다.

<Attach xmlns="https://schemas.microsoft.com/analysisservices/2003 /engine ">

<Folder>%dbFolder%</Folder>

<ReadWriteMode xmlns="https://schemas.microsoft.com/analysisservices/2008/engine/100">%ReadOnlyMode%</ReadWriteMode>

</Attach>

  1. %dbFolder%는 데이터베이스 폴더의 전체 UNC 경로로 대체하고 %ReadOnlyMode%는 해당 값(ReadOnly 또는 ReadWrite)으로, %password%는 암호로 대체합니다. % 문자는 템플릿의 일부이며 제거해야 합니다.

  2. XMLA 명령을 실행합니다.

참고 항목

Attach*
Microsoft.AnalysisServices.Database.Detach*
Analysis Services 데이터베이스 연결 및 분리
데이터베이스 스토리지 위치
Database ReadWriteModes
Attach 요소
Detach 요소
ReadWriteMode 요소
DbStorageLocation 요소