visual tools tablas studio procedimientos para for estructura español descargar data comparar almacenados database api command-line synchronization ssdt

database - tablas - sql server data tools 2012



Línea de comandos/API para la comparación de esquemas en el proyecto de base de datos de SSDT SQL Server? (4)

En Visual Studio 2012, tenemos Schema Compare en el SQL Server Database Project (DbProject) de SSDT que ayuda

  1. Comparar la source target
  2. Actualizar target para que sea el mismo que el de source

Dónde

  1. El origen y el destino pueden ser una base de datos, un proyecto DbProject o un archivo .dacpac
  2. La actualización se puede realizar a través de una acción de actualización o un script generado

Mi pregunta es: ¿es posible tener y dónde puedo obtener la interfaz de línea de comandos / API para llamar a esta función?



En la actualidad, la única forma de obtener acceso de la API a los resultados de comparación de esquemas es escribir un modificador / ejecutor del plan de implementación que se ejecute durante una operación de implementación / script en la API de DacServices. Esto le permite examinar el plan de implementación generado al comparar un dacpac con una base de datos, pero también le da acceso a ModelComparisonResult que representa una operación de comparación de esquema, que está disponible en el objeto de contexto que se pasa al método OnExecute de un colaborador. Acabo de escribir una entrada de blog que cubre este proceso y podría ser útil para usted. Mire eso y, con suerte, le ayudará a comenzar.


Escribí algunas líneas sobre este tema hace un tiempo. Esperemos que te sean útiles.

En pocas palabras, la herramienta que está buscando es vsdbcmd.exe , que se distribuye por las versiones Ultimate y Premium de Visual Studio.


FUENTE Base de datos sqlpackage.exe / a: Extraer / scs: Servidor =% Servidor%; Base de datos = AspBaselineDB; /tf:%DriveSpec%/%DacPath%/%AspBaselineDB%_baseline.dacpac

TARGET Database sqlpackage.exe / a: Extraer / scs: Servidor =% Servidor%; Base de datos =% AspTargetDB-2%; /tf:%DriveSpec%/%DacPath%/%AspTargetDB%.dacpac

COMPARAR Y GENERAR el script del Delta sqlpackage.exe / a: Script /sf:%DriveSpec%/%DacPath%/%AspBaselineDB%_baseline.dacpac /tf:%DriveSpec%/%DacPath%/AspNetDb/%AspTargetDB%.dacpac : aspTargetdb /op:%DriveSpec%/%SqlPath%/AspNetDb/AspDbUpdate.sql

Ejecute el script sqlcmd.exe -S% Server% / aspnetdbAmexDev -i% DriveSpec% /% SqlPath% / AspNetDb / AspDbUpdate.sql

Hago esto en los scripts de CMD ya que nuestro departamento de TI no permitirá los scripts de PowerShell sin firmar y no comprarán un certificado. Esto funciona perfectamente, incluso cuando lo llama desde TFS 2012 Team Builds o simplemente ejecuta la secuencia de comandos .CMD desde un indicador de comandos de VS como administrador.

¡Nota!

Agregue el siguiente SET en su script: SET PATH =% PATH%; C: / Archivos de programa (x86) / Microsoft SQL Server / 110 / DAC / bin

También: como se puede ver yo establezco variables de ruta. Hago esto porque estoy tocando hasta 50 tipos de la base de datos y esta es la única forma coherente que he encontrado para generar scripts delta y actualizar nuestras bases de datos DEV y TEST.