使用SqlPackage导入bacpac数据库,检查存在并指定位置

时间:2017-05-30 10:18:35

标签: sql-server database import sqlpackage bacpac

我可以运行SqlPackage来导入bacpac,它可以在运行之前检查数据库是否存在,还可以指定放置.mdf, .ldf文件的位置?因此,当数据库存在时,它将不会做任何事情;但如果它不存在,它会为我导入数据库吗?

1 个答案:

答案 0 :(得分:1)

SqlPackage.exe不接受参数来指定导入操作的mdf和ldf文件的位置。

有几种方法可以解决这个问题:

  • 自己创建一个包含所需mdf和ldf文件的空数据库(例如,使用sqlcmd),然后运行SqlPackage.exe将bacpac文件导入空数据库。
  • 使用“部署贡献者”在运行时修改部署行为。这有点复杂,因为它涉及将一些C#代码编译成.NET dll,然后在执行导入操作时必须使用它。但最好的部分是你可以重写SqlPackage.exe执行的T-SQL,不管你喜欢什么。以下是修改数据和日志文件路径的示例部署参与者:https://github.com/Microsoft/DACExtensions/blob/master/Samples/Contributors/DbLocationModifier.cs

至于存在vs的不同行为 - 请注意,import命令将拒绝修改非空数据库,因此执行导入操作是安全的,而不考虑数据库是否已存在。