在我目前的项目中,需要使用wix安装程序恢复数据库,之前我已经设法解决了这个问题,方法是创建一个5-10MB的DB的opacity:1;
visibility:visible;
脚本。
现在我的.sql
文件大约1GB且.bak
为2.8GB,我尝试将.sql
添加到项目中,但它甚至无法编译。
关于如何解决这个问题的任何想法?
RDBMS是Microsoft SQL Server 2014 Express。
答案 0 :(得分:1)
最好的方法是使用SSDT作为架构,然后使用bcp将数据导出为CSV文件,然后将其安装到磁盘上的某个位置。一旦他们在那里,您就可以使用sql:script或sql:string wix元素来调用sql bulk insert命令来填充数据:
bulk insert [Database].[dbo].[TableA] from C:\InstallLocation\TableA.Data.asc
您需要确保以正确的顺序导入数据,这样才不会出现FK错误或暂时禁用数据库中的外键:
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
不要忘记重新启用!
这实际上是分发要安装的数据库的一种非常有效的方法。例如,我们有一个大小约为1Gb的db,当在wix中使用标准的mszip cab压缩模式时,安装程序最终会达到~60Mb。如果压缩切换到高,它最终会达到~40Mb(但需要很长时间才能构建!)。显然YMMV因为它将取决于被压缩的数据,但它将远远小于sql备份或sql脚本。