다음을 통해 공유


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에서 이 명령에 대한 기성 스크립트를 생성할 수 없습니다. 대신 예제로 시작하거나 직접 작성할 수 있습니다.