0

我在自定义安装程序中使用 DacFX。我试图通过传入 Cmd 变量 DefaultDataPath 和 DefaultLogPath 来覆盖默认数据和日志文件位置,但数据库的文件仍在默认位置创建。这看起来应该非常简单,但即使在生成脚本并将其保存到文件并单步执行代码之后,我也可以看到 DacOptions 对象具有正确的 SqlCommmandVariableValues 值,但生成的脚本没有价值观。似乎他们被忽略了。

dacOptions.SqlCommandVariableValues.Add("DefaultDataPath", dataPath);
dacOptions.SqlCommandVariableValues.Add("DefaultLogPath", logPath);
4

2 回答 2

2

为了解决这个问题,我最终找到了一种使用Deployment Contributors的方法。可以在DacFx Public Samples中找到更改数据库位置的示例。

于 2018-01-22T13:33:20.057 回答
1

我花了一些时间在反射器上,但不能轻易看出这些是否被忽略:)

我过去所做的是首先运行一个脚本来创建数据库,如果它不存在我想要的任何文件设置,那么部署将升级一个空数据库或升级现有数据库。

sql很简单:

if not exists(Select * from sys.databases where name = 'XX')
begin
  create database blah blah

end

SSDT/DacFx 的优点是它可以让你大部分时间在那里,但有时你只需要先帮它一把 :)。如果您无法更改默认文件,请先运行 sql 脚本进行设置,您已经拥有所需的所有详细信息和权限,因此您不妨自己更轻松。

我也会提出一个连接作为一个错误,它可能会被修复,或者至少我们可以了解为什么它不能被改变。

于 2017-10-09T13:29:52.833 回答