Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esto se aplica a:✅ Almacén en Microsoft Fabric
Importante
Esta característica se encuentra en versión preliminar.
Los scripts previos a la implementación y posteriores a la implementación permiten ejecutar comandos de Transact-SQL personalizados como parte de la implementación de un almacenamiento en Fabric. Use scripts previos a la implementación y posteriores a la implementación para limpiar los datos, los datos de referencia de inicialización o aplicar la seguridad de SQL que no se expresa en el esquema del almacenamiento.
En un Fabric Data Warehouse, un script anterior a la implementación o posterior a la implementación es una consulta SQL compartida. Puede crear estos scripts en un proyecto de base de datos SQL y designarlos desde el portal de Fabric. La designación se almacena como metadatos de nivel de almacén y se registra en el control de código fuente como parte del archivo .sqlproj del almacén, por lo que puede pasar de ida y vuelta por Git y las canalizaciones de implementación sin necesidad de volver a aplicarse manualmente.
En este artículo se explica qué son los scripts previos a la implementación y posteriores a la implementación, cómo configurarlos en el portal de Fabric, cómo se comportan con canalizaciones de implementación y control de código fuente, y cómo crearlos en Visual Studio Code y SQL Server Management Studio (SSMS).
Importante
Revise siempre los scripts de implementación y la configuración antes de publicarlos. Pruebe primero en entornos de desarrollo y pruebas para evitar la pérdida de datos no deseada.
¿Qué son los scripts previos a la implementación y posteriores a la implementación?
Cuando conectas un espacio de trabajo al control de versiones, cada almacén aparece como un proyecto de base de datos SQL: un script controlado por código de los objetos SQL que conforman el esquema del almacén (tablas, vistas, procedimientos almacenados y funciones). Cada objeto se almacena como un .sql archivo que contiene su sintaxis de lenguaje de definición de datos (DDL), como CREATE TABLE. Los objetos describen el estado deseado del esquema y el proceso de implementación compara ese estado deseado con el almacenamiento de destino y genera un script T-SQL diferencial que crea, modifica o quita objetos para que el destino coincida con el proyecto.
Los scripts previos a la implementación y posteriores a la implementación amplían este proceso con Transact-SQL que se ejecuta en torno a la implementación del esquema:
- Un script previo a la implementación se ejecuta antes de aplicar el plan de implementación de esquema.
- Un script posterior a la implementación se ejecuta una vez completado el plan de implementación del esquema.
Un script anterior a la implementación o posterior a la implementación es una de las consultas compartidas almacenadas en la carpeta Consultas del almacenamiento. Un almacenamiento admite como máximo un script previo a la implementación y un script posterior a la implementación. La designación se almacena como metadatos de nivel de almacenamiento en lugar de duplicar el contenido del script, por lo que agrega una sobrecarga de almacenamiento insignificante.
Dado que cada script designado se ejecuta cada vez que se implementa el almacenamiento, cree el Transact-SQL para que sea idempotente (seguro para ejecutarse repetidamente).
Tip
Cuando un script es idempotente, puedes ejecutarlo varias veces sin causar problemas. Puedes desplegar en varias bases de datos sin necesidad de predeterminar su estado.
Casos de uso comunes
- Administración de datos estáticos y de referencia: insertar, actualizar o eliminar filas de tablas de búsqueda, configuración o referencia después de implementar el esquema.
- Limpieza de datos: quite datos obsoletos o temporales antes o después de aplicar los cambios de esquema.
- Configuración del entorno: aplique la configuración o inicialice el estado que difiere entre los entornos de desarrollo, prueba y producción.
- Inicialización de canalización basada en metadatos: Preparar el estado del almacén de datos requerido por los pasos posteriores de la canalización.
-
Seguridad de SQL: los datos de tabla de almacenamiento y las características de seguridad de SQL, como roles, usuarios y
GRANT/DENYpermisos, no se incluyen en el proyecto de base de datos SQL. Use un script posterior a la implementación para volver a crear estos objetos después de la implementación, incluidas las diferencias entre entornos de prueba y producción. Para ver ejemplos, consulte Script de ejemplo posterior al despliegue para la seguridad de SQL.
Estructura y sintaxis de archivos de proyecto de SQL
Un proyecto SQL de almacén de datos hace referencia a los scripts previos y posteriores a la implementación en el archivo del proyecto (.sqlproj) mediante los tipos de elemento PreDeploy y PostDeploy. Cada entrada apunta a un único archivo de consulta compartido en el proyecto.
En el ejemplo siguiente se designa pre-deployment.sql como script previo a la implementación y post-deployment.sql como script posterior a la implementación:
<ItemGroup>
<PreDeploy Include="pre-deployment.sql" />
<PostDeploy Include="post-deployment.sql" />
</ItemGroup>
Importante
Fabric Data Warehouse solo admite un único archivo para el script anterior a la implementación y un único archivo para el script posterior a la implementación. No se admite la redacción de un script a partir de varios archivos ( por ejemplo, mediante el comando SQLCMD :r para hacer referencia a otros archivos).
.sqlproj Si contiene varias entradas anteriores a la implementación o posteriores a la implementación, se produce un error en la actualización de Git.
Script de ejemplo posterior al despliegue para la seguridad de SQL
Dado que las características de seguridad de SQL no se capturan en el proyecto de base de datos SQL, un script posterior a la implementación es una manera habitual de volver a crearlas después de implementar un almacenamiento. Escriba el script para que pueda ejecutarse en cada implementación.
El siguiente ejemplo crea un rol de base de datos personalizado denominado DataReaders y concede permisos de SELECT al esquema dbo.
-- post-deployment.sql
-- Recreate a role and grant permissions after deployment.
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = N'DataReaders')
BEGIN
CREATE ROLE DataReaders;
END;
GO
GRANT SELECT ON SCHEMA::dbo TO DataReaders;
GO
Note
Fabric Data Warehouse no admite todas las instruccionesTransact-SQL disponibles en SQL Server. Asegúrese de que las sentencias de sus scripts son compatibles con Fabric Data Warehouse.
Configuración de scripts previos a la implementación y posteriores a la implementación en el portal de Fabric
En el portal de Fabric, designe una consulta compartida existente como script anterior a la implementación o posterior a la implementación. Puede hacerlo desde Explorador de objetos o desde la configuración del elemento de almacenamiento.
No se puede designar una consulta compartida como script anterior a la implementación y posterior a la implementación al mismo tiempo.
Desde Explorador de objetos
- En el editor de almacenamiento, expanda la carpeta Consultas en Explorador de objetos.
- Haga clic con el botón derecho en la consulta compartida que desea usar.
- Si es necesario, mueve una consulta de Mis consultas a una consulta compartida.
- Seleccione Establecer scripts de implementación. Esta acción le lleva al panel de configuración del elemento.
- En los campos de script de pre-despliegue y script de post-despliegue , selecciona Choose script.
- Elige la opción Establecer una consulta como script previo o posterior a la implementación y luego selecciona una consulta compartida para cada caso. Cada desplegable muestra todas las consultas compartidas en el almacén.
Desde la configuración de objetos
- Abre la configuración del almacén.
- Ve a la sección CI/CD.
- En los campos de script de pre-despliegue y script de post-despliegue , selecciona Choose script.
- Elige la opción Establecer una consulta como script previo o posterior a la implementación y luego selecciona una consulta compartida para cada uno. Cada desplegable muestra todas las consultas compartidas en el almacén.
Las selecciones que realice se almacenan como metadatos de nivel de almacenamiento y se mantienen sincronizadas entre Explorador de objetos y configuración de elementos.
Cómo se comportan los scripts previos a la implementación y posteriores a la implementación
Con la integración de Git
Cuando se conecta un área de trabajo a un repositorio de Git, las designaciones anteriores a la implementación y posteriores a la implementación se serializan en el archivo del .sqlproj almacenamiento cuando se confirma. Al actualizar el almacenamiento desde Git, Fabric aplica los cambios al almacenamiento en directo y ejecuta los scripts en orden:
- El script previo a la implementación se ejecuta antes de que se apliquen los cambios del esquema.
- Se aplica el plan de implementación del esquema.
- El script posterior al despliegue se ejecuta después de que se completen los cambios en el esquema.
Designaciones de ida y vuelta a través de Git: configurar un script en el portal y confirmarlo, o crearlo en el .sqlproj área de trabajo y actualizarlo, genera un resultado coherente. Las confirmaciones repetidas y las actualizaciones no duplican ni pierden la configuración. Dado que solo se permite una implementación previa y un script posterior a la implementación, una configuración creadas en Git reemplaza cualquier designación existente en el almacenamiento al actualizar.
Con canalizaciones de despliegue
Las canalizaciones de implementación utilizan las designaciones de predespliegue y posdespliegue al promover un almacén de datos por las etapas de desarrollo, pruebas y producción. Los scripts designados se ejecutan deterministamente en cada entorno de destino, por lo que puede usarlos para aplicar la configuración del entorno o para volver a aplicar la seguridad de SQL a medida que el contenido se mueve entre fases.
En áreas de trabajo sin control de código fuente
La definición del elemento de almacenamiento incluye las designaciones anteriores a la implementación y posteriores a la implementación, incluso cuando el área de trabajo no está conectada al control de código fuente. Exportar el almacenamiento incluye la configuración e importarla restaura la configuración intacta.
Crear scripts previos y posteriores a la implementación en un proyecto de base de datos SQL
En lugar del portal de Fabric, puede crear scripts previos y posteriores al despliegue directamente en el proyecto de base de datos SQL del almacén de datos mediante la extensión SQL Database Projects en Visual Studio Code o la experiencia integrada de proyectos SQL en SQL Server Management Studio. La configuración aparece en el portal de Fabric —en ambos Explorador de objetos y Configuración del elemento— después de la siguiente actualización de Git.
Código de Visual Studio
- Instale la extensión Proyectos de SQL Database en Visual Studio Code.
- Abra el proyecto de base de datos SQL para su almacén de datos. Si el área de trabajo está conectada a Git, clone el repositorio y abra la carpeta del proyecto de almacenamiento.
- En la vista Proyectos de base de datos , haga clic con el botón derecho en el nodo del proyecto y seleccione Agregar script anterior a la implementación o Agregar script posterior a la implementación.
- Proporcione un nombre de script sin la extensión de archivo. El archivo de script se agrega al proyecto y se abre en el editor.
- Agregue el Transact-SQL al script y guarde el archivo. Asegúrate de que el archivo esté guardado en la
.sharedqueriescarpeta para la próxima actualización de Git. - Confirme e inserte los cambios en el repositorio de Git y actualice el área de trabajo desde el control de código fuente para aplicar la configuración.
SQL Server Management Studio
- Use SQL Server Management Studio 22 o una versión posterior, que incluye la experiencia de SQL Database Projects.
- Abra el proyecto de base de datos SQL para su almacén de datos.
- En Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto y seleccione Agregar>script. Seleccione script anterior a la implementación o script posterior a la implementación.
- El archivo de script se agrega al proyecto y se abre en el editor de consultas.
- Agregue el Transact-SQL al script y guarde el archivo. Asegúrate de guardar el archivo en la
.sharedqueriescarpeta para la próxima actualización de Git. - Confirme e inserte los cambios en el repositorio de Git y actualice el área de trabajo desde el control de código fuente para aplicar la configuración.
Editar el archivo del proyecto directamente
En cualquier herramienta, puede designar un script editando el archivo .sqlproj y añadiendo un único elemento PreDeploy o PostDeploy a un ItemGroup:
<ItemGroup>
<PreDeploy Include="./sharedqueries/pre-deployment.sql" />
<PostDeploy Include="./sharedqueries/post-deployment.sql" />
</ItemGroup>
Migración desde proyectos SQL existentes
Si migra un .sqlproj desde SQL Server Data Tools (SSDT) o Visual Studio que ya contiene entradas <PreDeploy> y <PostDeploy>, el proceso de importación reconoce y asigna esas entradas a la configuración de preimplementación y posimplementación de Fabric. Dado que Fabric solo admite una implementación previa y un script posterior a la implementación, asegúrese de que el proyecto contiene como máximo una entrada de cada tipo antes de importar.
Consideraciones y limitaciones
- Un almacenamiento solo admite un script previo a la implementación y un único script posterior a la implementación. No admite varios archivos por script.
- No puede asignar la misma consulta compartida tanto al script previo a la implementación como al script posterior a la implementación.
- Si elimina una consulta compartida designada como script anterior a la implementación o posterior a la implementación, la designación correspondiente se borra automáticamente.
- Si cambia una consulta compartida designada como script anterior a la implementación o posterior a la implementación en una consulta de usuario, la designación correspondiente se borra automáticamente.
- Los scripts previos y posteriores a la implementación se ejecutan en cada implementación de almacenamiento. Los scripts de Transact-SQL deben ser idempotentes, de modo que las ejecuciones repetidas no produzcan errores ni creen objetos duplicados.
- Los scripts previos a la implementación y posteriores a la implementación no se validan en el modelo de base de datos en tiempo de compilación. Los errores en los scripts afloran en el momento del despliegue, y un fallo en un script detiene el despliegue.
- Solo puede utilizar Transact-SQL compatible con el Fabric Data Warehouse.
- La identidad que ejecuta la implementación debe tener los permisos necesarios para ejecutar el contenido del script.