web-dev-qa-db-fra.com

Comment importer une sauvegarde Azure SQL (.bacpac) vers LocalDB à l'aide de Visual Studio?

J'imagine que ce serait un scénario assez courant, mais je ne trouve pas comment importer une base de données Azure SQL exportée (.bacpac) dans mon LocalDB dans Visual Studio 201. Suis-je en train de manquer quelque chose ou Visual Studio manque quelque chose?

(Remarque: il existe des solutions ici lorsque l'on a SQL Server Management Studio mais je ne l'ai pas et je préfère ne pas l'installer, si possible.)

27
Borek Bernard

Si vous avez ce dossier sur votre machine C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin alors vous pouvez exécuter cette commande pour restaurer le fichier bacpac:

.\SqlPackage.exe /Action:Import /SourceFile:"c:\temp\your.bacpac" /TargetConnectionString:"Data Source=(localdb)\v11.0;Initial Catalog=devdb; Integrated Security=true;"

Si ce dossier est manquant, vous devrez télécharger l'outillage de Microsoft .

29
Simon W

Pour moi, la bonne commande à utiliser était:

.\SqlPackage.exe /Action:Import /SourceFile:"c:\temp\your.bacpac" /TargetConnectionString:"Data Source=(localdb)\mssqllocaldb;Initial Catalog=DBNAME;Integrated Security=true;"

Sinon, j'obtiendrais une erreur: *** Error importing database:Could not import package. Unable to connect to master or target server 'DBNAME'. You must have a user with the same password in master or target server 'DBNAME'.

En utilisant VS2015, à l'emplacement spécifié par anjdreas:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130

9
teocomi

Si vous souhaitez l'utiliser plusieurs fois, vous pouvez ajouter sqlpackage aux variables d'environnement, ce qui vous permet d'exécuter sqlpackage en tant que commande à partir de n'importe quel dossier.

Voir ici pour savoir comment ajouter un chemin d'accès aux variables d'environnement, ce n'est pas trop difficile.

Ensuite, vous pouvez simplement exécuter: sqlpackage de n'importe où! Pour tester après l'ajout, ouvrez simplement l'invite de commande ou PowerShell à partir de n'importe quel dossier et tapez sqlpackage, et vous devriez obtenir quelque chose comme ça (n'oubliez pas de fermer toutes les invites précédemment ouvertes pour qu'elles puissent obtenir la modification):

running <code>sqlpackage</code> from anywhere

Script complet alors:

sqlpackage/Action: Importer /SourceFile:"C:...\SOMEDBBACKUP.bacpac "/ TargetConnectionString:" Data Source = (localdb)\mssqllocaldb; Initial Catalog = bac_give_dbimport_any_name_you_want; Integrated Security = true; "

Remarques:

  1. Mon installation répertorie un exe avec tous les noms en minuscules sqlpackage.exe, c'est pourquoi j'utilise tous les minuscules sqlpackage
  2. Mon chemin avec VStudio 2019 en ce moment est le suivant, mais vous pouvez jouer avec le chemin final pour trouver le vôtre/la version la plus récente (j'aurais pu choisir parmi ".../DAC/130" ou 140 ou 150):

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150\sqlpackage.exe

  1. Pour le nom de la base de données importée, il ne doit pas nécessairement correspondre au nom de la base de données d'origine, donc "bac_give_dbimport_any_name_you_want" pourrait être tout ce que vous voulez.
1