在特定位置从WIX创建Sql Server Db

时间:2014-05-08 15:27:36

标签: sql sql-server wix custom-action

我正在尝试让WIX在用户指定的位置创建数据库。我使用一些CustomActions并将参数传递给sql脚本,大部分都在工作。但是我在尝试创建数据库的目录上遇到了权限问题。

寻找这个问题的解决方案让我看到了今天之前我没见过的帖子(Wix: create a sql server database at a specified location),似乎有人完成了我想要做的事情。

从该帖子中不清楚用户是如何调用脚本的?我希望他们正在做类似下面的代码片段,我只是不知道如何将值传递给脚本。如果是这样,那将大大简化我的任务。

<sql:SqlDatabase>
  <sql:SqlScript>
</sql:SqlDatabase

有人可以告诉我如何在不使用customAction通过sqlcmd.exe调用脚本时将值传递给SqlScript吗?

感谢。

1 个答案:

答案 0 :(得分:1)

对于希望这样做的任何其他人的未来参考,有几种方法可以在指定位置创建数据库。最简单的是使用我不知道的wix标签:

<sql:SqlFileSpec Name="DataBaseFile"  Id ="mdfFile" Filename = "[DBDIR]TestDataBase.mdf"/>
<sql:SqlLogFileSpec Name="DataBaseLogFile" Id ="ldfFile" Filename = "[DBDIR]TestDataBase_Log.ldf"/>

只要创建数据库的目录不在“Program Files”或“Program Files(x86)”下,这就完美无缺。这两个位置似乎都具有特殊权限,不允许SQL Server在那里创建数据库。可以通过尝试使用Sql Server Mgmt Studio在Program Files下的某个文件夹中创建数据库并查看生成的错误来测试该理论。这对我来说是这样的:

CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file

我仍在试图弄清楚安装程序如何在Program Files下放置数据库,因为我确信之前已经完成了。