Analysis Services 데이터베이스 관리자(dba)가 테이블 형식 또는 다차원 데이터베이스의 읽기/쓰기 모드를 변경하려는 경우가 종종 있습니다. 이러한 상황은 더 나은 사용자 환경을 위해 Analysis Services 서버 풀 간에 데이터베이스를 공유하는 등 비즈니스 요구 사항에 따라 발생하는 경우가 많습니다.
데이터베이스 모드는 여러 가지 방법으로 전환할 수 있습니다. 이 문서에서는 다음과 같은 일반적인 시나리오를 설명합니다.
SQL Server Management Studio를 대화형으로 사용
프로그래밍 방식으로 AMO 사용
XMLA를 사용하는 스크립트로
절차
Management Studio를 사용하여 대화형으로 데이터베이스의 읽기/쓰기 모드를 전환하려면
Management Studio의 왼쪽 또는 오른쪽 창에서 전환할 데이터베이스를 찾습니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 데이터베이스 폴더를 찾아 위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.
중요합니다
데이터베이스가 분리되는 즉시 Management Studio는 더 이상 데이터베이스 위치를 가져오는 데 도움이 되지 않습니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 분리...를 선택합니다.
분리할 데이터베이스에 암호를 할당한 다음 확인을 클릭하여 분리 명령을 실행합니다.
Management Studio의 왼쪽 또는 오른쪽 창에서 데이터베이스 폴더를 찾습니다.
데이터베이스 폴더를 마우스 오른쪽 단추로 클릭하고 연결...을 선택합니다.
폴더 텍스트 상자에 데이터베이스 폴더의 원래 위치를 입력합니다. 또는 찾아보기 단추(...)를 사용하여 데이터베이스 폴더를 찾을 수 있습니다.
데이터베이스의 읽기/쓰기 모드를 선택합니다.
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);
}
}
C# 애플리케이션에서 필요한 매개 변수를 사용하여 호출
SwitchReadWrite()합니다.코드를 컴파일하고 실행하여 데이터베이스를 이동합니다.
XMLA를 사용하여 스크립트를 사용하여 읽기/쓰기 모드를 데이터베이스로 전환하려면
Management Studio의 왼쪽 또는 오른쪽 창에서 전환할 데이터베이스를 찾습니다.
데이터베이스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 데이터베이스 폴더를 찾아 위치를 확인합니다. 빈 데이터베이스 스토리지 위치는 데이터베이스 폴더가 서버 데이터 폴더에 있음을 나타냅니다.
중요합니다
데이터베이스가 분리되는 즉시 Management Studio는 더 이상 데이터베이스 위치를 가져오는 데 도움이 되지 않습니다.
Management Studio에서 새 XMLA 탭을 엽니다.
XMLA에 대해 다음 스크립트 템플릿을 복사합니다.
<Detach xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>%dbName%</DatabaseID>
<Password>%password%</Password>
</Object>
</Detach>
%dbName%을(를) 데이터베이스 이름으로,%password%을(를) 암호로 바꾸세요. % 문자는 템플릿의 일부이며 제거해야 합니다.XMLA 명령을 실행합니다.
새 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>
%dbFolder%을(를) 데이터베이스 폴더의 전체 UNC 경로로 바꾸고,%ReadOnlyMode%을(를) 해당 값ReadOnly또는ReadWrite으로,%password%을(를) 암호로 바꾸십시오. % 문자는 템플릿의 일부이며 제거해야 합니다.XMLA 명령을 실행합니다.
또한 참조하십시오
Attach*
Microsoft.AnalysisServices.Database.Detach*
Analysis Services 데이터베이스 연결하기 및 분리하기
데이터베이스 스토리지 위치
Database ReadWriteModes
요소 첨부
요소 분리
ReadWriteMode 요소
DbStorageLocation 요소