Share via


Extensión de Azure DevOps para las herramientas de DevOps para SQL Server Integration Services (SSIS)

La extensión SSIS DevOps Tools está disponible en el marketplace de Azure DevOps. SSIS DevOps admite Azure DevOps Services, Azure DevOps Server 2019 y versiones posteriores.

Si no dispone de ninguna organización de Azure DevOps, primero debe registrarse en Azure Pipelines y, después, agregar la extensión SSIS DevOps Tools siguiendo estos pasos.

Las herramientas de DevOps de SSIS incluyen la tarea de compilación de SSIS, la tarea de la versión de implementación de SSIS y la tarea de configuración de catálogo de SSIS.

  • La tarea de compilación de SSIS admite la generación de archivos dtproj en el modelo de implementación de proyectos o en el modelo de implementación de paquetes.

  • La tarea de implementación de SSIS admite la implementación de archivos ispac individuales o múltiples en el catálogo de SSIS local y en Azure-SSIS IR, o de archivos SSISDeploymentManifest y sus archivos asociados en un recurso compartido de archivos locales o de Azure.

  • La tarea de configuración del catálogo de SSIS permite configurar la carpeta, proyecto o entorno del catálogo de SSIS con un archivo de configuración en formato JSON. Esta tarea admite los escenarios siguientes:

    • Carpeta 
      • Crear una carpeta.
      • Actualizar la descripción de la carpeta.
    • Project 
      • Configurar el valor de los parámetros, se admiten tanto el valor literal como el valor al que se hace referencia.
      • Agregar referencias del entorno.
    • Ambiente 
      • Crear entorno.
      • Actualizar la descripción del entorno.
      • Crear o actualizar la variable de entorno.

Tarea de compilación de SSIS

build task

Propiedades

Ruta de acceso del proyecto

Ruta de acceso de la carpeta o el archivo del proyecto que se va a compilar. Si se especifica una ruta de acceso de carpeta, la tarea de compilación de SSIS buscará todos los archivos dtproj de forma recursiva en esta carpeta y los compilará todos.

La ruta de acceso del proyecto no puede estar vacía, establézcala como . para compilar desde la carpeta raíz del repositorio.

Configuración de proyecto

Nombre de la configuración del proyecto que se va a usar para la compilación. Si no se proporciona, el valor predeterminado es la primera configuración de proyecto definida en cada archivo dtproj.

Ruta de acceso de resultados

Ruta de acceso de una carpeta independiente para guardar los resultados de la compilación, que se pueden publicar como artefactos de compilación a través de una tarea de publicación de artefactos de compilación.

Limitaciones y problemas conocidos

  • La tarea de compilación de SSIS se basa en Visual Studio y en el diseñador de SSIS, que es obligatorio en los agentes de compilación. Por lo tanto, para ejecutar la tarea de compilación de SSIS en la canalización:

    • para agentes hospedados por Microsoft, debe elegir una imagen disponible que incluya Visual Studio y la extensión de SQL Server Integration Services, por ejemplo, windows-2022. Para obtener más información, consulte la documentación de agentes hospedados por Microsoft para software incluido en las imágenes disponibles.
    • Para los agentes autohospedados, instale Visual Studio y el diseñador SSIS (ya sea VS2022 + extensión Proyectos SSIS, o VS2019 + la extensión Proyectos SSIS) en los agentes autohospedados.
  • Para compilar proyectos de SSIS mediante el uso de componentes integrados (incluido Azure Feature Pack de SSIS y otros componentes de terceros), los componentes integrados deben instalarse en el equipo en el que se ejecuta el agente de canalización. Para el agente hospedado por Microsoft, el usuario puede agregar una tarea PowerShell Script o una tarea Command Line Script para descargar e instalar los componentes antes de que se ejecute la tarea de compilación de SSIS. A continuación se muestra el script de PowerShell de ejemplo para instalar Azure Feature Pack:

wget -Uri https://download.microsoft.com/download/E/E/0/EE0CB6A0-4105-466D-A7CA-5E39FA9AB128/SsisAzureFeaturePack_2017_x86.msi -OutFile AFP.msi

start -Wait -FilePath msiexec -Args "/i AFP.msi /quiet /l* log.txt"

cat log.txt
  • En la tarea de compilación de SSIS no se admiten los niveles de protección EncryptSensitiveWithPassword y EncryptAllWithPassword. Asegúrese de que todos los proyectos de SSIS del código base no usan ninguno de estos dos niveles de protección, o la tarea de compilación de SSIS dejará de responder y agotará el tiempo de espera durante la ejecución.

Tarea de compilación de SSIS, versión 1.*

Mejoras en la versión 1.*:

  • Quite la dependencia en Visual Studio y el diseñador de SSIS. La tarea de compilación se puede ejecutar en un agente hospedado por Microsoft o en un agente autohospedado con el sistema operativo Windows y .NET Framework 4.6.2 o versiones posteriores.

  • No es necesario instalar componentes de inmediato.

  • Admite los niveles de protección EncryptionWithPassword y EncryptionAllWithPassword.

Limitaciones y problemas conocidos

  • La versión 1.* de la tarea de compilación de SSIS no admite la compilación del proyecto de SSIS que contiene el paquete SSIS con firma digital.

Solo propiedades de la versión 1.*

Contraseña del proyecto

Contraseña del proyecto de SSIS y sus paquetes. Este argumento solo es válido cuando el nivel de protección del proyecto y los paquetes de SSIS es EncryptSensitiveWithPassword o EncryptAllWithPassword. En el modelo de implementación de paquetes, todos los paquetes deben compartir la misma contraseña especificada por este argumento.

Eliminación de datos confidenciales

Convierta el nivel de protección del proyecto de SSIS en DontSaveSensitve si este valor es true. Cuando el nivel de protección es EncryptSensitiveWithPassword o EncryptAllWithPassword, el argumento Project Password debe estar correctamente establecido. Esta opción solo es válida para el modelo de implementación de proyectos.

Tarea de implementación de SSIS

deploy task

Propiedades

Ruta de origen

Ruta de acceso de los archivos de origen ISPAC o SSISDeploymentManifest que quiere implementar. Esta ruta de acceso puede ser una ruta de acceso a una carpeta o a un archivo.

Tipo de destino

Tipo de destino. Actualmente, la tarea de implementación de SSIS admite dos tipos de destino:

  • Sistema de archivos: los archivos SSISDeploymentManifest y sus archivos asociados se implementan en un sistema de archivos especificado. Se admiten recursos compartidos de archivos tanto locales como en Azure.
  • SSISDB: los archivos ISPAC se implementan en un catálogo de SSIS específico, que se puede hospedar localmente en SQL Server o en Azure-SSIS Integration Runtime.

Servidor de destino

Nombre del motor de base de datos de destino. Puede ser el nombre de una instancia administrada de SQL Server, Azure SQL Database o Azure SQL Managed Instance local. Esta propiedad solo es visible cuando el tipo de destino es SSISDB.

Ruta de acceso de destino

Ruta de acceso de la carpeta de destino en la que se implementará el archivo de código fuente. Por ejemplo:

  • /SSISDB/<folderName>
  • \\<machineName>\<shareFolderName>\<optionalSubfolderName>

La tarea de implementación de SSIS creará la carpeta y la subcarpeta, si no existen.

Tipo de autenticación

Tipo de autenticación para acceder al servidor de destino especificado. Esta propiedad solo es visible cuando el tipo de destino es SSISDB. En general, se admiten los tipos de autenticación siguientes:

  • Autenticación de Windows
  • Autenticación de SQL Server
  • Active Directory - Contraseña
  • Active Directory - Integrado

Pero el hecho de que se admita un tipo de autenticación concreto depende del tipo de servidor y del tipo de agente de destino. En la tabla siguiente se muestra la matriz de compatibilidad detallada.

Tipo de servidor de destino Agente hospedado por Microsoft Agente autohospedado
SQL Server local o máquina virtual N/D Autenticación de Windows
Azure SQL Autenticación de SQL Server 
Active Directory - Contraseña
Autenticación de SQL Server 
Active Directory - Contraseña 
Active Directory - Integrado

Nombre de dominio

Nombre de dominio para acceder al sistema de archivos especificado. Esta propiedad solo es visible cuando el tipo de destino es Sistema de archivos. Puede dejarla vacía cuando la cuenta de usuario que va a ejecutar el agente autohospedado haya obtenido acceso de lectura/escritura a la ruta de acceso al destino especificado.

Nombre de usuario

Nombre de usuario para acceder al sistema de archivos especificado o a SSISDB. Esta propiedad está visible cuando el tipo de destino es el sistema de archivos o el tipo de autenticación es Autenticación de SQL Server o Active Directory - Contraseña. Puede dejarla vacía cuando el tipo de destino sea el sistema de archivos y la cuenta de usuario que va a ejecutar el agente autohospedado haya obtenido acceso de lectura/escritura a la ruta de acceso al destino especificado.

Contraseña

Contraseña para acceder al sistema de archivos especificado o a SSISDB. Esta propiedad está visible cuando el tipo de destino es el sistema de archivos o el tipo de autenticación es Autenticación de SQL Server o Active Directory - Contraseña. Puede dejarla vacía cuando el tipo de destino sea el sistema de archivos y la cuenta de usuario que va a ejecutar el agente autohospedado haya obtenido acceso de lectura/escritura a la ruta de acceso al destino especificado.

Sobreescritura de proyectos existentes o archivos SSISDeploymentManifest con los mismos nombres

Especifica si se sobrescriben los proyectos existentes o archivos SSISDeploymentManifest con los mismos nombres. En caso negativo, la tarea de implementación de SSIS omite la implementación de esos proyectos o archivos.

Implementación continua al producirse un error

Especifica si se continúa con la implementación de los proyectos o archivos restantes cuando se produce un error. En caso negativo, la tarea de implementación de SSIS se detiene inmediatamente cuando se produce un error.

Limitaciones y problemas conocidos

Actualmente, la tarea de implementación de SSIS no admite los escenarios siguientes:

  • Configuración del entorno en el catálogo de SSIS.
  • Implementación de ISPAC en Azure SQL Server o Azure SQL Managed Instance, que solo permiten la autenticación multifactor.
  • Implementación de paquetes en MSDB o en el almacén de paquetes de SSIS.
  • Si instala la extensión SSIS DevOps Tools en Azure DevOps Server, es posible que vea el mensaje "El tamaño del paquete de extensión supera el tamaño máximo del paquete". Para resolver el problema, complete los pasos siguientes:
    1. Conéctese a la instancia de SQL Server local y seleccione la base de datos Gallery_Configuration.
    2. Ejecute la consulta INSERT INTO dbo.tbl_RegistryItems VALUES (1,'#\Configuration\Service\Gallery\LargeExtensionUpload\SSIS\','MaxPackageSizeMB\',50). Cambie 50 por un número mayor si la extensión es superior a 50 MB.
    3. Después de ejecutar la consulta, reinicie Internet Information Services. Vuelva a intentar cargar la extensión.
    4. Si el error continúa, póngase en contacto con el equipo de soporte técnico de SQL Server.

Tarea de implementación de SSIS versión 1.*

Mejoras en la versión 1.*:

  • Admite los niveles de protección EncryptionWithPassword y EncryptionAllWithPassword.

Solo propiedades de la versión 1.*

Contraseña del proyecto

Contraseña para descifrar los archivos ISPAC o DTSX. Este argumento solo es válido cuando el nivel de protección es EncryptSensitiveWithPassword o EncryptAllWithPassword.

Tarea de configuración del catálogo de SSIS

catalog configuration task

Propiedades

Origen del archivo de configuración

Origen del archivo JSON de configuración del catálogo de SSIS. Puede ser "Ruta de acceso al archivo" o "Insertado".

Consulte los detalles sobre cómo definir el archivo JSON de configuración:

Ruta de acceso al archivo JSON de configuración

Ruta de acceso del archivo JSON de configuración del catálogo de SSIS. Esta propiedad solo es visible cuando se selecciona "Ruta de acceso al archivo" como origen del archivo de configuración.

Para usar variables de canalización en el archivo JSON de configuración, debe agregar una tarea de transformación de archivo antes de esta para reemplazar los valores de configuración con variables de canalización. Para obtener más información, vea Sustitución de variables JSON.

Archivo JSON de configuración insertado

Archivo JSON de configuración insertado del catálogo de SSIS. Esta propiedad solo es visible cuando se selecciona "Insertado" como origen del archivo de configuración. Las variables de canalización se pueden usar directamente.

Revertir la configuración cuando se produce un error

Indica si se va a revertir la configuración realizada por esta tarea cuando se produce un error.

Servidor de destino

Nombre del Motor de base de datos de destino. Puede ser el nombre de una instancia administrada de SQL Server, Azure SQL Database o Azure SQL Managed Instance local.

Tipo de autenticación

Tipo de autenticación para acceder al servidor de destino especificado. En general, se admiten los tipos de autenticación siguientes:

  • Autenticación de Windows
  • Autenticación de SQL Server
  • Active Directory - Contraseña
  • Active Directory - Integrado

Pero el hecho de que se admita un tipo de autenticación concreto depende del tipo de servidor y del tipo de agente de destino. En la tabla siguiente se muestra la matriz de compatibilidad detallada.

Tipo de servidor de destino Agente hospedado por Microsoft Agente autohospedado
SQL Server local o máquina virtual N/D Autenticación de Windows
Azure SQL Autenticación de SQL Server 
Active Directory - Contraseña
Autenticación de SQL Server 
Active Directory - Contraseña 
Active Directory - Integrado

Nombre de usuario

Nombre de usuario para acceder a la instancia de SQL Server de destino. Esta propiedad solo es visible cuando el tipo de autenticación es Autenticación de SQL Server o Active Directory - Contraseña.

Contraseña

Contraseña para acceder a la instancia de SQL Server de destino. Esta propiedad solo es visible cuando el tipo de autenticación es Autenticación de SQL Server o Active Directory - Contraseña.

Definición del archivo JSON de configuración

El esquema JSON de configuración tiene tres niveles:

  • catalog
  • folder
  • proyecto y entorno

catalog configuration schema

Un ejemplo de archivo JSON de configuración insertado

{
  "folders": [
    {
      "name": "devopsdemo",
      "description": "devops demo folder",
      "projects": [
        {
          "name": "catalog devops",
          "parameters": [
            {
              "name": "password",
              "container": "Package.dtsx",
              "value": "passwd",
              "valueType": "referenced"
            },
            {
              "name": "serverName",
              "container": "catalog devops",
              "value": "localhost",
              "valueType": "literal"
            }
          ],
          "references": [
            {
              "environmentName": "test",
              "environmentFolder": "devopsdemo"
            },
            {
              "environmentName": "test",
              "environmentFolder": "."
            }
          ]
        }
      ],
      "environments": [
        {
          "name": "test",
          "description": "test",
          "variables": [
            {
              "name": "passwd",
              "type": "string",
              "description": "",
              "value": "$(SSISDBServerAdminPassword)",
              "sensitive": true
            },
            {
              "name": "serverName",
              "type": "string",
              "description": "",
              "value": "$(TargetServerName)",
              "sensitive": false
            }
          ]
        }
      ]
    }
  ]
}

Esquema JSON

Atributos del catálogo
Propiedad Descripción Notas
carpetas Matriz de objetos de carpeta. Cada objeto contiene información de configuración de una carpeta de catálogo. Vea Atributos de carpeta para obtener el esquema de un objeto de carpeta.
Atributos de carpeta
Propiedad Descripción Notas
name Nombre de la carpeta del catálogo. La carpeta se creará si no existe.
description Descripción de la carpeta del catálogo. Se omitirá el valor de null.
projects Matriz de objetos de proyecto. Cada objeto contiene información de configuración de un proyecto. Vea Atributos del proyecto para obtener el esquema de un objeto de proyecto.
environments Matriz de objetos de entorno. Cada objeto contiene información de configuración de un entorno. Vea Atributos de entorno para obtener el esquema de un objeto de entorno.
Atributos de proyecto
Propiedad Descripción Notas
name Nombre del proyecto. El objeto de proyecto se omitirá si el proyecto no existe en la carpeta principal.
parámetros Matriz de objetos de parámetro. Cada objeto contiene información de configuración de un parámetro. Vea Atributos de parámetro para obtener el esquema de un objeto de parámetro.
references Matriz de objetos de referencia. Cada objeto representa una referencia de entorno al proyecto de destino. Vea Atributos de referencia para obtener el esquema de un objeto de referencia.
Atributos de parámetro
Propiedad Descripción Notas
name Nombre del parámetro.
  • El parámetro puede ser un parámetro de proyecto o un parámetro de paquete.
  • El parámetro se omite si no existe.
  • Si el parámetro es una propiedad del administrador de conexiones, el nombre debe estar con el formato CM.<Connection Manager Name>.<Property Name>.
  • contenedor Contenedor del parámetro.
  • Si el parámetro es un parámetro de proyecto, container debe ser el nombre del proyecto.
  • Si es un parámetro de paquete, container debe ser el nombre del paquete con la extensión .dtsx.
  • value Valor del parámetro.
  • Cuando valueType es referenced: el valor es una referencia a una variable de entorno con el tipo de cadena.
  • Cuando valueType es literal: este atributo admite cualquier valor JSON booleano, de número y de cadena válido.
  • El valor se convertirá al tipo de parámetro de destino. Se producirá un error si no se puede convertir.
  • El valor de null no es válido. La tarea omitirá este objeto de parámetro y mostrará una advertencia.
  • valueType Tipo del valor del parámetro. Los tipos válidos son los siguientes: 
    literal: el atributo value representa un valor literal.
    referenced: el atributo value es una referencia a una variable de entorno.
    Atributos de referencia
    Propiedad Descripción Notas
    environmentFolder Nombre de carpeta del entorno. La carpeta se creará si no existe.
    El valor puede ser ".", que representa la carpeta principal del proyecto, que hace referencia al entorno.
    environmentName Nombre del entorno al que se hace referencia. Si el entorno especificado no existe, se creará.
    Atributos de entorno
    Propiedad Descripción Notas
    name Nombre del entorno. Si el entorno no existe, se creará.
    description Descripción del entorno. Se omitirá el valor de null.
    variables Matriz de objetos de variable. Cada objeto contiene información de configuración para una variable de entorno. Vea Atributos de variables para obtener el esquema de un objeto de variable.
    Atributos de variables
    Propiedad Descripción Notas
    name Nombre de la variable de entorno. Si la variable de entorno no existe, se creará.
    type Tipo de datos de la variable de entorno. Los tipos válidos son los siguientes: 
    boolean
    byte
    datetime
    decimal 
    double
    int16
    int32
    int64
    sbyte
    single
    string
    uint32
    uint64
    description Descripción de la variable de entorno. Se omitirá el valor de null.
    value Valor de la variable de entorno. Este atributo admite cualquier valor JSON booleano, de número y de cadena válido.
    El valor se convertirá al tipo especificado por el atributo type. Se producirá un error si no se puede realizar la conversión.
    El valor de null no es válido. La tarea omitirá este objeto de variable de entorno y mostrará una advertencia.
    sensitive Si el valor de la variable de entorno es confidencial. Las entradas válidas son: 
    true
    false

    Notas de la versión

    Versión 1.0.6

    Fecha de publicación: 1 de septiembre de 2021

    • Versión de disponibilidad general (GA).

    Versión 1.0.5

    Fecha de publicación: 2 de junio de 2021

    • Se ha corregido un problema que hacía que en ocasiones la tarea de compilación de SSIS de la versión 1.* no pudiese compilar proyectos o paquetes con el nivel de protección EncryptSensitiveWithPassword o EncryptAllWithPassword y mostrase el error "El vector de inicialización (IV) especificado no coincide con el tamaño del bloque para este algoritmo".
    • Se ha quitado el contenido JSON del registro de la tarea de configuración del catálogo de SSIS cuando el origen del archivo de configuración es "Ruta de acceso del archivo".

    Versión 1.0.4

    Fecha de publicación: 21 de abril de 2021

    • Tarea de compilación de SSIS versión 1.* (vista previa) 
      • Quite la dependencia en Visual Studio y el diseñador de SSIS. La tarea de compilación se puede ejecutar en un agente hospedado por Microsoft o en un agente autohospedado con el sistema operativo Windows y .NET Framework 4.6.2 o versiones posteriores.
      • No es necesario instalar componentes de inmediato.
      • Admite los niveles de protección EncryptionWithPassword y EncryptionAllWithPassword.
    • Tarea de implementación de SSIS versión 1.* (vista previa) 
      • Admite los niveles de protección EncryptionWithPassword y EncryptionAllWithPassword.

    Versión 1.0.3

    Fecha de lanzamiento: 21 de octubre de 2020

    • Permite especificar el sufijo de la cadena de conexión para la tarea de implementación de SSIS y la tarea de configuración del catálogo de SSIS.

    Versión 1.0.2

    Fecha de lanzamiento: 26 de mayo de 2020

    • Se ha corregido un problema que hacía que se produjera un error en la tarea de configuración del catálogo de SSIS en algún caso después de realizar la configuración.

    Versión 1.0.1

    Fecha de lanzamiento: 9 de mayo de 2020

    • Se corrigió un problema que haría que la tarea de compilación de SSIS compilara siempre toda la solución incluso si solo se especifica un único archivo dtproj como ruta de acceso del proyecto.

    Versión 1.0.0

    Fecha de lanzamiento: 8 de mayo de 2020

    • Versión de disponibilidad general (GA).
    • Se ha agregado una restricción de versión mínima de .NET Framework en el agente. La versión mínima requerida de .NET Framework es 4.6.2 actualmente.
    • Se ha mejorado la descripción de las tareas de compilación de SSIS y de implementación de SSIS.

    Versión 0.2.0 Versión preliminar

    Fecha de lanzamiento: 31 de marzo de 2020

    • Se ha agregado la tarea de configuración del catálogo de SSIS.

    Versión 0.1.3 (versión preliminar)

    Fecha de lanzamiento: 19 de enero de 2020

    • Se corrigió un problema que impedía la implementación de ISPAC si se cambiaba el nombre de archivo original.

    Versión preliminar 0.1.2

    Fecha de lanzamiento: 13 de enero de 2020

    • Se ha agregado información más detallada sobre las excepciones en el registro de tareas de implementación de SSIS cuando el tipo de destino es SSISDB.
    • Se ha corregido la ruta de destino de ejemplo en el texto de ayuda de la ruta de destino de la propiedad de la tarea de implementación de SSIS.

    Versión 0.1.1 (versión preliminar)

    Fecha de lanzamiento: 6 de enero de 2020

    • Se ha agregado una restricción de requisito de versión mínima del agente. Actualmente, la versión mínima del agente de este producto es 2.144.0.
    • Se han corregido algunos textos de visualización incorrectos para la tarea de implementación de SSIS.
    • Se han modificado algunos mensajes de error.

    Versión 0.1.0 (versión preliminar)

    Fecha de lanzamiento: 5 de diciembre de 2019

    Versión inicial de las herramientas de DevOps para SSIS. Se trata de una versión preliminar.

    Pasos siguientes