다음을 통해 공유


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

Analysis Services DBA(데이터베이스 관리자)가 데이터베이스의 읽기/쓰기 모드를 변경해야 하는 경우가 종종 있습니다. 대개 사용자 경험 개선을 위해 Analysis Services 서버의 풀에서 데이터베이스를 공유하는 것과 같은 비즈니스 요구 사항에 따라 데이터베이스의 읽기/쓰기 모드를 변경합니다.

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

  • SQL Server Management Studio를 사용하여 대화식으로 전환

  • AMO를 사용하여 프로그래밍 방식으로 전환

  • XMLA를 사용하여 스크립트로 전환

절차

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

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

  2. 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 데이터베이스 폴더를 찾은 후 위치를 확인합니다. 빈 데이터베이스 저장소 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.

    중요 정보중요

    데이터베이스를 분리하면 즉시 Management Studio를 사용하여 데이터베이스 위치를 찾을 수 없게 됩니다.

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

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

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

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

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

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

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

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

  • 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. 데이터베이스를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 데이터베이스 폴더를 찾은 후 위치를 확인합니다. 빈 데이터베이스 저장소 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.

    중요 정보중요

    데이터베이스를 분리하면 즉시 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 명령을 실행합니다.