Поделиться через


Команда 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 можно использовать с любым из следующих объектов:

Объект Database (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.

Примеры

В следующих примерах показан скрипт, который можно запустить в окне XMLA в Management Studio или использовать в качестве входных данных в командлете Invoke-ASCmd в AMO PowerShell.

Пример 1 . Этот скрипт изменяет свойство name таблицы.

{   
  "alter": {   
    "object": {   
      "database": "AdventureWorksDW2016",   
      "table": "DimDate"  
    },   
    "table": {   
      "name": "DimDate2"  
    }   
  }   
}  

При условии, что локальный именованный экземпляр (имя экземпляра — табличное) и JSON-файл со скриптом alter, эта команда изменяет имя таблицы с 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"  
        }  
    }   
  }   
}  

Использование (конечные точки)

Этот командный элемент используется в инструкции вызова метода Execute (XMLA) через конечную точку XMLA, которая предоставляется следующими способами:

  • Как окно XMLA в SQL Server Management Studio (SSMS)

  • Входной файл командлета PowerShell invoke-ascmd

  • В качестве входных данных для задачи служб SSIS или задания агент SQL Server

Вы не можете создать готовый скрипт для этой команды из SSMS. Вместо этого можно начать с примера или написать свой собственный.