我想这将是一个相当主流的场景,但我找不到如何在Visual Studio 2013中将导出的 Azure SQL 数据库 (.bacpac) 导入到我的LocalDB中。我是否遗漏了什么或 Visual Studio 遗漏了什么?
(注意:如果有 SQL Server 管理工作室但我没有它并且不想安装它,如果可能的话,这里有解决方案。)
我想这将是一个相当主流的场景,但我找不到如何在Visual Studio 2013中将导出的 Azure SQL 数据库 (.bacpac) 导入到我的LocalDB中。我是否遗漏了什么或 Visual Studio 遗漏了什么?
(注意:如果有 SQL Server 管理工作室但我没有它并且不想安装它,如果可能的话,这里有解决方案。)
如果你的机器上有这个文件夹,C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin那么你可以运行这个命令来恢复 bacpac 文件:
.\SqlPackage.exe /Action:Import /SourceFile:"c:\temp\your.bacpac" /TargetConnectionString:"Data Source=(localdb)\v11.0;Initial Catalog=devdb; Integrated Security=true;"
如果该文件夹丢失,您将需要从 Microsoft 下载工具。
对我来说,正确使用的命令是:
.\SqlPackage.exe /Action:Import /SourceFile:"c:\temp\your.bacpac" /TargetConnectionString:"Data Source=(localdb)\mssqllocaldb;Initial Catalog=DBNAME;Integrated Security=true;"
否则我会得到一个错误:
*** 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'.
使用VS2015,在anjdreas指定的位置:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130
如果您想多次使用它,您可以添加sqlpackage
到环境变量中,允许您sqlpackage
从任何文件夹作为命令运行。
请参阅此处了解如何添加环境变量的路径,这并不难。
然后你就可以跑了:sqlpackage
从任何地方!添加后要进行测试,只需从任何文件夹中打开命令提示符或 powershell 并键入sqlpackage
,您应该会得到类似的内容(请记住先关闭所有以前打开的提示,以便他们可以得到更改):
完整的脚本然后:
sqlpackage /Action:Import /SourceFile:"C:...\SOMEDBBACKUP.bacpac" /TargetConnectionString:"数据源=(localdb)\mssqllocaldb;初始目录=bac_give_dbimport_any_name_you_want;集成安全=true;"
笔记:
sqlpackage.exe
,这就是我使用全小写的原因sqlpackage
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150\sqlpackage.exe
传递/TargetConnectionString
参数时,我收到错误
操作导入需要 TargetDatabaseName 参数的值
SqlPackage.exe
似乎有点挑剔。
我必须提供请求的参数 -TargetDatabaseName
和TargetServerName
(短名称tdn
和tsn
),它起作用了。
最终命令如下所示:
.\SqlPackage.exe /Action:Import /SourceFile:"c:\temp\your.bacpac" /tdn:"C:\temp\database.mdf" /tsn:"(LocalDB)\MSSQLLocalDB"