我们计划将报表服务器上使用的图像移动到数据库中,因为目前我们必须在每个报表服务器上运行安装程序才能将图像添加到该服务器。但是我们的问题是安装程序也可能从远程位置运行(即不是将图像保存在数据库中的数据库服务器)。在这种情况下,Openrowset 将无法将我们的图像作为其上传到我们的本地服务器上,而 db 服务器是远程的。
有没有办法使用我们用 wix 编写的安装程序从另一台服务器上传图像?
我最近在使用 BCP 时遇到了一个非常相似的问题。最后,我在安装目录上创建了一个共享:
<CustomAction Id="SetDatafileSharePath"
Property="DATAFILE_SHARE"
Value="\\[ComputerName]\DataLocation" />
<util:User Id="EveryoneUser"
Name="Everyone" />
<util:FileShare Id="DataShare"
Name="DataLocation"
Description="Share of the datafiles.">
<util:FileSharePermission Read="yes"
ReadAttributes="yes"
ReadPermission="yes"
CreateChild="yes"
CreateFile="yes"
GenericAll="yes"
User="EveryoneUser" />
</util:FileShare>
然后使用该DATAFILE_SHARE
属性运行 BCP 命令。我遇到的最大问题是共享权限,因此您可能需要更改一些FileSharePermission
设置才能让它为您工作。
如果没有太多图像并且它们不太可能更改,您可以使用的另一个选项是将它们插入到本地 sql 服务器,然后使用SSMS 工具的“生成插入脚本”功能来创建带有图像 blob 的 sql 插入作为base64字符串。不幸的是,我无法做到这一点,因为我的数据每个月都在变化。