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

적용 대상: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

SQL Server Analysis Services 데이터베이스 관리자는 여러 쿼리 전용 서버 간에 쿼리 워크로드를 분산하는 더 큰 노력의 일환으로 테이블 형식 또는 다차원 데이터베이스의 읽기/쓰기 모드를 변경할 수 있습니다.

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

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

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

  • XMLA 또는 TMSL을 사용하여 스크립트

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

  1. 개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.

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

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

  4. 개체 탐색기에서 데이터베이스 폴더를 마우스 오른쪽 단추로 클릭하고 연결...을 선택합니다.

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

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

  7. 암호를 입력하고 확인을 클릭하여 연결 명령을 실행합니다.

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

C# 애플리케이션에서 필요한 매개 변수를 사용하여 호출 SwitchReadWrite() 합니다. 코드를 컴파일하고 실행하여 데이터베이스를 이동합니다.

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 dataDir = server.ServerProperties["DataDir"].Value;  
                 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);  
    }  
}  
  

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

다음 지침은 호환성 모드 1050, 1100 또는 1103의 다차원 데이터베이스 및 테이블 형식 데이터베이스에 적용됩니다.

  1. 개체 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.

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

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

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

    <Detach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Object>  
          <DatabaseID>%dbName%</DatabaseID>  
          <Password>%password%</Password>  
       </Object>  
    </Detach>  
    
  5. 데이터베이스 이름을 %dbName%으로, 암호를 %password%으로 교체하십시오. % 문자는 템플릿의 일부이며 제거해야 합니다.

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

  7. 새 XMLA 탭에서 XMLA에 대한 다음 스크립트 템플릿 복사

    <Attach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">  
       <Folder>%dbFolder%</Folder>  
       <ReadWriteMode xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100">%ReadOnlyMode%</ReadWriteMode>  
    </Attach>  
    
  8. 데이터베이스 폴더의 전체 UNC 경로를 %dbFolder%로 대체하고, %ReadOnlyMode% 또는 ReadWrite로 대체하며, %password%를 비밀번호로 바꿉니다. % 문자는 템플릿의 일부이며 제거해야 합니다.

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

또한 참조하십시오

Analysis Services의 고가용성 및 확장성
Analysis Services 데이터베이스 연결 및 분리
데이터베이스 스토리지 위치
Database ReadWriteModes
요소 연결
요소 분리
ReadWriteMode 요소
DbStorageLocation 요소