web-dev-qa-db-fra.com

Publier DACPAC sur SQL Server 2014 à l'aide de SqlPackage.exe?

J'ai publié avec succès des DACPAC sur des instances SQL Server 2008-2012 à l'aide de SqlPackage.exe, tel qu'il est installé par SQL Server Data Tools (et se trouve généralement dans C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin). Cependant, en tentant de publier un DACPAC ciblé en 2014 sur une instance de SQL Server 2014 en utilisant ce même SqlPackage.exe, j'obtiens ce qui suit:

*** Could not deploy package.
Internal Error. The database platform service with type Microsoft.Data.Tools.
Schema.Sql.Sql120DatabaseSchemaProvider is not valid. You must make sure the
service is loaded, or you must provide the full type name of a valid database
platform service.

J'ai trouvé peu d'informations à ce sujet; le plus proche que j'ai trouvé est une problème publication sur Azure.

Je me suis tenu à jour avec les correctifs SSDT mais je suppose que le SqlPackage.exe que j'ai (qui montre une version 11.0.2902.0) est tout simplement incompatible. Je peux publier sur cette même instance à l'aide de la commande Publier de Visual Studio 2012 afin que l'instance elle-même ne semble pas être le problème.

Existe-t-il une version plus récente de SqlPackage qui prendrait en charge la publication d'un DACPAC 2014 sur un serveur 2014? Ou une autre manière scriptable de le faire?

28
Nick Jones

Oui, une nouvelle version prenant en charge SQL Server 2005-2016 est disponible et s'installe à un emplacement différent de la version précédente (SQL Server 2012 et versions antérieures). En fait, vous aurez différents emplacements d'installation selon que vous utilisez simplement SSDT ou si vous l'installez dans le cadre de SSMS ou du programme d'installation autonome.

  • SSDT installe les DLL Dac dans Visual Studio dans les dernières versions. C'est pour éviter les problèmes côte à côte (Visual Studio 2012 vs 2013 vs SSMS) qui nécessitaient tous d'être mis à jour pour utiliser le dernier code.

    • Si vous avez mis à jour vers le dernier SSDT , vous trouverez SqlPackage.exe et les DLL associées dans le répertoire d'installation VS VS\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130 . Pour VS2013, le répertoire d'installation de VS est C:\Program Files (x86)\Microsoft Visual Studio 12.0 et 14.0 pour VS2015.
  • SQL Server Management Studio (SSMS) et la version autonome Dac Framework MSI s'installent tous les deux à l'échelle du système. Il s'agit C:\Program Files (x86)\Microsoft SQL Server\130\Dac\bin .

55
Kevin Cunnane

Il existe maintenant un package NuGet officiel Microsoft.Data.Tools.Msbuild qui contient SqlPackage.exe et un article de blog avec les détails:

Ce package NuGet contient tous les composants requis pour créer et publier des projets SQL (.sqlproj). Cela prend en charge l'intégration continue et les scénarios de déploiement continu - les projets SQL peuvent être construits sur un agent de build local sans installer les produits Visual Studio ou SQL Server Data Tools (SSDT) ​​complets.

9
Jason

SSDT installe les DLL Dac dans Visual Studio dans les dernières versions. C'est pour éviter les problèmes côte à côte (Visual Studio 2012 vs 2013 vs SSMS) qui nécessitaient tous d'être mis à jour pour utiliser le dernier code. Si vous avez mis à jour le dernier SSDT, vous trouverez SqlPackage.exe et les DLL associées dans le répertoire d'installation VS\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130. Pour VS2013, le répertoire d'installation de VS est C:\Program Files (x86)\Microsoft Visual Studio 12.0 et 14.0 pour VS2015. SQL Server Management Studio (SSMS) et le MSI Dac Framework autonome s'installent tous les deux à l'emplacement du système. Il s'agit de C:\Program Files (x86)\Microsoft SQL Server\130\Dac\bin.

** Ans de M. Kevin Cunnane. est un bon processus mais si la base de données dans sql2016 utilise 140\dac **

1
Deb Kumar Roy