ReadOnly 모드와 ReadWrite 모드 간 Analysis Services 데이터베이스 전환
적용 대상: SQL Server Analysis Services Azure Analysis Services 패브릭/Power BI Premium
SQL Server Analysis Services 데이터베이스 관리자는 여러 쿼리 전용 서버 간에 쿼리 워크로드를 분산하는 더 큰 노력의 일환으로 테이블 형식 또는 다차원 데이터베이스의 읽기/쓰기 모드를 변경할 수 있습니다.
데이터베이스 모드는 여러 가지 방법으로 전환할 수 있습니다. 이 문서에서는 다음과 같은 일반적인 시나리오에 대해 설명합니다.
대화형으로 SQL Server Management Studio 사용
AMO를 사용하여 프로그래밍 방식으로 이동
XMLA 또는 TMSL을 사용하여 스크립트로 이동
Management Studio를 사용하여 데이터베이스의 읽기/쓰기 모드를 대화식으로 전환
개체 탐색기 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 분리...를 선택합니다.
분리되는 데이터베이스에 암호를 할당한 후 확인 을 클릭하여 분리 명령을 실행합니다.
개체 탐색기 데이터베이스 폴더를 마우스 오른쪽 단추로 클릭하고 연결...을 선택합니다.
폴더 입력란에 데이터베이스 폴더의 원래 위치를 입력합니다. 또는 찾아보기 단추(...)를 사용하여 데이터베이스 폴더를 찾을 수 있습니다.
데이터베이스의 읽기/쓰기 모드를 선택합니다.
암호를 입력하고 확인 을 클릭하여 연결 명령을 실행합니다.
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 호환성 모드에서 다차원 데이터베이스 및 테이블 형식 데이터베이스에 적용됩니다.
개체 탐색기 데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 분리...를 선택합니다.
Management Studio에서 새 XMLA 탭을 엽니다.
다음 XMLA 스크립트 템플릿을 복사합니다.
<Detach xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> <Object> <DatabaseID>%dbName%</DatabaseID> <Password>%password%</Password> </Object> </Detach>
%dbName%
은 데이터베이스 이름으로 대체하고%password%
는 암호로 대체합니다. % 문자는 템플릿의 일부이므로 제거해야 합니다.XMLA 명령을 실행합니다.
다음 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>
%dbFolder%
는 데이터베이스 폴더의 전체 UNC 경로로 대체하고%ReadOnlyMode%
는 해당 값( ReadOnly 또는 ReadWrite)으로,%password%
는 암호로 대체합니다. % 문자는 템플릿의 일부이므로 제거해야 합니다.XMLA 명령을 실행합니다.
참고 항목
Analysis Services의 고가용성 및 확장성
Analysis Services 데이터베이스 연결 및 분리
데이터베이스 스토리지 위치
ReadWriteMode 데이터베이스
Attach 요소
Detach 요소
ReadWriteMode 요소
DbStorageLocation 요소