我有一个VS 2010数据库项目,我很乐意计划每天部署到我的本地开发服务器,没有任何问题。我们现在正在接近发布期,我想开始部署到远程UAT服务器,但它现在失败了“错误SQL01268:无法批量加载,因为无法打开文件”。我认为这取决于其中一个部署后脚本,其中包含如下行:
declare @xml xml
set @xml = (select * from OPENROWSET(BULK '$(OutputPath)\XML_1.xml', SINGLE_BLOB) as x);
(此xml将进一步插入表格中)
我猜这是失败的,因为该文件实际上并不在远程服务器上,并且它只能用到现在,因为服务器与部署脚本位于同一台机器上。
首先,是吗?其次,有没有人知道我可以改变部署脚本的方法,将这些xml文件作为部署的一部分插入,而不必先将它们复制到远程服务器(我可能没有那种访问权限)。
答案 0 :(得分:0)
我有一个可能的解决方案,但它并不是特别漂亮 - sqlcmd模式。
我试图在运行之前将所有XML包含在文件中,而不是尝试将文件包含在SQL中。
e.g。
set @xml = '<?xml version="1.0" encoding="utf-8" ?>
:r .\xml\XML_1.xml'
';
这种方法的主要问题是我必须在集合中包含xml声明,因为sql cmd代码必须存在于它自己的行上,但是在xml文件的开头之间不能有回车符和宣言。