我可以运行SqlPackage
import bacpac
,它可以在运行之前检查数据库是否存在,并且还可以指定文件的放置位置.mdf, .ldf
?所以当数据库存在时,它不会做任何事情;但如果它不存在,它会为我导入数据库吗?
问问题
883 次
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 回答