Compartir a través de


Comando Alter (TMSL)

Se aplica a: SQL Server 2016 y versiones posteriores analysis Services Azure Analysis Services Fabric/Power BI Premium

Modifica un objeto existente, pero no sus elementos secundarios. Si el objeto no existe, el comando genera un error.

Use el comando Alter para las actualizaciones de destino, como establecer una propiedad en una tabla sin tener que especificar también todas las columnas. Este comando es similar a CreateOrReplace, pero sin necesidad de tener que proporcionar una definición de objeto completa.

En el caso de los objetos que tengan propiedades de lectura y escritura, si especifica una propiedad de lectura y escritura, deberá especificar todas ellas mediante valores nuevos o existentes. Puede usar PowerShell de AMO para obtener una lista de propiedades.

Solicitud

Alter no tiene ningún atributo. Las entradas incluyen el objeto que se va a modificar, seguido de la definición de objeto modificada.

En el ejemplo siguiente se muestra la sintaxis para cambiar una propiedad en un objeto de partición. La ruta de acceso del objeto establece qué objeto de partición se va a modificar a través de pares nombre-valor de objetos primarios. La segunda entrada es un objeto de partición que especifica el nuevo valor de propiedad.

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

La estructura de la solicitud varía en función del objeto . Alter se puede usar con cualquiera de los siguientes objetos:

Objeto Database (TMSL) Cambie el nombre de una base de datos.

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

Objeto DataSources (TMSL) Cambie el nombre de una conexión, que es un objeto secundario de la base de datos.

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

Objeto Tables (TMSL) Vea el ejemplo 1 a continuación.

Objeto Partitions (TMSL) Consulte el ejemplo 2 siguiente.

Objeto Roles (TMSL) Cambiar una propiedad en un objeto de rol.

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

Response

Devuelve un resultado vacío cuando el comando se realiza correctamente. De lo contrario, se devuelve una excepción XMLA.

Ejemplos

En los ejemplos siguientes se muestra el script que puede ejecutar en una ventana XMLA de Management Studio o usar como entrada en Invoke-ASCmd cmdlet en AMO PowerShell.

Ejemplo 1 : este script cambia la propiedad name de una tabla.

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

Suponiendo que una instancia con nombre local (el nombre de instancia es "tabular") y un archivo JSON con el script alter, este comando cambia un nombre de tabla de DimDate a DimDate2:

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

Ejemplo 2 : este script cambia el nombre de una partición, por ejemplo, al final del año cuando el año actual se convierte en el año anterior. Asegúrese de especificar todas las propiedades. Si deja el origen sin especificar, podría interrumpir todas las definiciones de partición existentes.

A menos que cree, reemplace o modifique el propio objeto de origen de datos, cualquier origen de datos al que se haga referencia en el script (como en el script de partición siguiente) debe ser un objeto DataSource existente en el modelo. Si necesita cambiar el origen de datos, hágalo como paso independiente.

{   
  "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 (puntos de conexión)

Este elemento de comando se usa en una instrucción de la llamada al método Execute (XMLA) a través de un punto de conexión XMLA, expuesto de las siguientes maneras:

  • Como ventana XMLA en SQL Server Management Studio (SSMS)

  • Como archivo de entrada para el cmdlet de PowerShell invoke-ascmd

  • Como entrada para una tarea de SSIS o un trabajo de Agente SQL Server

No puede generar un script listo para este comando desde SSMS. En su lugar, puede empezar con un ejemplo o escribir su propio.