Share via


Comando Alter (TMSL)

Aplica-se a: SQL Server 2016 e posteriores do Analysis Services Azure Analysis Services Fabric/Power BI Premium

Altera um objeto existente, mas não seus filhos. Se o objeto não existir, o comando gerará um erro.

Use o comando Alter para atualizações direcionadas, como definir uma propriedade em uma tabela sem precisar especificar todas as colunas também. Esse comando é semelhante a CreateOrReplace, mas sem a necessidade de fornecer uma definição de objeto completa.

Para objetos que têm propriedades de leitura/gravação, se você especificar uma propriedade de leitura/gravação, precisará especificar todos eles, usando valores novos ou existentes. Você pode usar o AMO PowerShell para obter uma lista de propriedades.

Solicitação

Alter não tem nenhum atributo. As entradas incluem o objeto a ser alterado, seguido pela definição do objeto modificado.

O exemplo a seguir ilustra a sintaxe para alterar uma propriedade em um objeto de partição. O caminho do objeto estabelece qual objeto de partição deve ser alterado por meio de pares nome-valor de objetos pai. A segunda entrada é um objeto de partição que especifica o novo valor da propriedade.

{   
  "alter": {   
    "object": {   
      "database": "\<database-name>",   
      "table": "\<table-name>",   
      "partition": "\<partition-name>"   
    },   
    "partition": {   
      "name": "\<new-partition-name>",   
       . . .  << other properties   
    }   
  }   
}   

A estrutura da solicitação varia de acordo com o objeto . Alter pode ser usado com qualquer um dos seguintes objetos:

Objeto database (TMSL) Renomeie um banco de dados.

"alter": {   
    "object": {   
      "database": "\<database-name>"  
    },   
    "database": {   
      "name": "\<new-database-name>",   
    }   
  }   

Objeto DataSources (TMSL) Renomeie uma conexão, que é um objeto filho do banco de dados.

{   
   "alter":{   
      "object":{   
         "database":"AdventureWorksTabular1200",  
         "dataSource":"SqlServer localhost AdventureworksDW2016"  
      },  
      "dataSource":{   
         "name":"A new connection name"  
      }  
   }  
}  

Objeto Tables (TMSL) Veja o exemplo 1 abaixo.

Objeto Partitions (TMSL) Veja o Exemplo 2 abaixo.

Objeto Roles (TMSL) Altere uma propriedade em um objeto de função.

{   
   "alter":{   
      "object":{   
         "database":"AdventureWorksTabular1200",  
         "role":"DataReader"  
      },  
      "role":{   
         "name":"New Name"  
      }  
   }  
}  

Resposta

Retorna um resultado vazio quando o comando é bem-sucedido. Caso contrário, uma exceção XMLA será retornada.

Exemplos

Os exemplos a seguir demonstram o script que você pode executar em uma janela XMLA no Management Studio ou usar como entrada em Invoke-ASCmd cmdlet no AMO PowerShell.

Exemplo 1 – Esse script altera a propriedade name em uma tabela.

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

Supondo que uma instância nomeada local (o nome da instância seja "tabular") e um arquivo JSON com o alter script, esse comando altera um nome de tabela de DimDate para DimDate2:

invoke-ascmd -inputfile '\\my-computer\my-shared-folder\altertablename.json' -server 'localhost\Tabular'

Exemplo 2 – Esse script renomeia uma partição, por exemplo, no final do ano, quando o ano atual se torna o ano anterior. Especifique todas as propriedades. Se você deixar a origem não especificada, ela poderá interromper todas as definições de partição existentes.

A menos que você esteja criando, substituindo ou alterando o próprio objeto de fonte de dados, qualquer fonte de dados referenciada em seu script (como no script de partição abaixo) deve ser um objeto DataSource existente em seu modelo. Se você precisar alterar a fonte de dados, faça isso como uma etapa separada.

{   
  "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"  
        }  
    }   
  }   
}  

Uso (pontos de extremidade)

Esse elemento de comando é usado em uma instrução da chamada do Método Execute (XMLA) em um ponto de extremidade XMLA, exposto das seguintes maneiras:

  • Como uma janela XMLA no SSMS (SQL Server Management Studio)

  • Como um arquivo de entrada para o cmdlet do PowerShell invoke-ascmd

  • Como uma entrada para uma tarefa do SSIS ou trabalho de SQL Server Agent

Você não pode gerar um script pronto para esse comando do SSMS. Em vez disso, você pode começar com um exemplo ou escrever o seu próprio.