2

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

4

1 回答 1

2

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

有几个选项可以解决这个问题:

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

至于存在与不存在的不同行为——请注意,导入命令将拒绝修改非空数据库,因此无论数据库是否已存在,执行导入操作都是安全的。

于 2017-05-31T17:42:07.050 回答