Alter 명령(TMSL)
적용 대상: SQL Server 2016 이상 Analysis Services Azure Analysis Services Fabric/Power BI Premium
기존 개체를 변경하지만 자식 개체는 변경하지 않습니다. 개체가 없으면 명령에서 오류가 발생합니다.
모든 열을 지정하지 않고도 테이블에 속성을 설정하는 것과 같은 대상 업데이트에 Alter 명령을 사용합니다. 이 명령은 CreateOrReplace와 비슷하지만 전체 개체 정의를 제공할 필요가 없습니다.
읽기-쓰기 속성이 있는 개체의 경우 하나의 읽기-쓰기 속성을 지정하는 경우 새 값이나 기존 값을 사용하여 모든 속성을 지정해야 합니다. AMO PowerShell을 사용하여 속성 목록을 가져올 수 있습니다.
요청
Alter 에는 특성이 없습니다. 입력에는 변경할 개체와 수정된 개체 정의가 포함됩니다.
다음 예제에서는 파티션 개체의 속성을 변경하기 위한 구문을 보여 줍니다. 개체 경로는 부모 개체의 이름-값 쌍을 통해 변경할 파티션 개체를 설정합니다. 두 번째 입력은 새 속성 값을 지정하는 파티션 개체입니다.
{
"alter": {
"object": {
"database": "\<database-name>",
"table": "\<table-name>",
"partition": "\<partition-name>"
},
"partition": {
"name": "\<new-partition-name>",
. . . << other properties
}
}
}
요청의 구조는 개체에 따라 달라집니다. Alter 는 다음 개체와 함께 사용할 수 있습니다.
데이터베이스 개체(TMSL) 데이터베이스 이름을 바꿉니다.
"alter": {
"object": {
"database": "\<database-name>"
},
"database": {
"name": "\<new-database-name>",
}
}
DataSources 개체(TMSL) 데이터베이스의 자식 개체인 연결 이름을 바꿉니다.
{
"alter":{
"object":{
"database":"AdventureWorksTabular1200",
"dataSource":"SqlServer localhost AdventureworksDW2016"
},
"dataSource":{
"name":"A new connection name"
}
}
}
Tables 개체(TMSL) 아래 예제 1을 참조하세요.
Partitions 개체(TMSL) 아래 예제 2 를 참조하세요.
Roles 개체(TMSL) 역할 개체의 속성을 변경합니다.
{
"alter":{
"object":{
"database":"AdventureWorksTabular1200",
"role":"DataReader"
},
"role":{
"name":"New Name"
}
}
}
응답
명령이 성공하면 빈 결과를 반환합니다. 그렇지 않으면 XMLA 예외가 반환됩니다.
예제
다음 예제에서는 Management Studio의 XMLA 창에서 실행하거나 AMO PowerShell의 Invoke-ASCmd cmdlet에서 입력으로 사용할 수 있는 스크립트를 보여 줍니다.
예제 1 - 이 스크립트는 테이블의 이름 속성을 변경합니다.
{
"alter": {
"object": {
"database": "AdventureWorksDW2016",
"table": "DimDate"
},
"table": {
"name": "DimDate2"
}
}
}
instance(instance 이름은 "테이블 형식")이라는 로컬과 alter 스크립트가 있는 JSON 파일을 가정하면 이 명령은 테이블 이름을 DimDate에서 DimDate2로 변경합니다.
invoke-ascmd -inputfile '\\my-computer\my-shared-folder\altertablename.json' -server 'localhost\Tabular'
예제 2 -- 이 스크립트는 파티션의 이름을 바꿉니다(예: 현재 연도가 이전 연도가 되는 연말). 모든 속성을 지정해야 합니다. 원본을 지정하지 않은 상태로 두면 기존 파티션 정의가 모두 중단될 수 있습니다.
데이터 원본 개체 자체를 만들거나 바꾸거나 변경하지 않는 한 스크립트에서 참조되는 모든 데이터 원본(예: 아래 파티션 스크립트)은 모델의 기존 DataSource 개체여야 합니다. 데이터 원본을 변경해야 하는 경우 별도의 단계로 변경합니다.
{
"alter": {
"object": {
"database": "InternetSales",
"table": "DimDate",
"partition": "CurrentYear"
},
"partition": {
"name": "Year2009",
"source": {
"query": "SELECT [dbo].[DimDate].* FROM [dbo].[DimDate] WHERE [dbo].[DimDate].CalendarYear = 2009",
"dataSource": "SqlServer localhost AdventureworksDW2016"
}
}
}
}
사용량(엔드포인트)
이 명령 요소는 다음과 같은 방법으로 노출되는 XMLA 엔드포인트를 통해 XMLA(Execute 메서드) 호출의 문에 사용됩니다.
SSMS(SQL Server Management Studio)의 XMLA 창으로
invoke-ascmd PowerShell cmdlet에 대한 입력 파일로
SSIS 작업 또는 SQL Server 에이전트 작업에 대한 입력으로
SSMS에서 이 명령에 대한 기성 스크립트를 생성할 수 없습니다. 대신 예제로 시작하거나 직접 작성할 수 있습니다.