0

我有一个 VS 2010 数据库项目,我很乐意每天将其部署到我的本地开发服务器上,没有任何问题。我们现在接近发布期,我想开始部署到远程 UAT 服务器,但现在失败并显示“错误 SQL01268:无法批量加载,因为无法打开文件”。我认为这取决于包含如下行的部署后脚本之一:

declare @xml xml
set @xml = (select * from OPENROWSET(BULK '$(OutputPath)\XML_1.xml', SINGLE_BLOB) as x);

(这个 xml 被插入到一个表中)

我猜这是失败的,因为该文件实际上不在远程服务器上,并且它直到现在才起作用,因为服务器与部署脚本位于同一台机器上。

首先,是这样吗?其次,有谁知道我可以更改我的部署脚本以将这些 xml 文件作为部署的一部分插入而无需先将它们复制到远程服务器(我可能没有这种访问权限)的方法。

4

1 回答 1

0

我有一个可能的解决方案,但它不是特别漂亮 - sqlcmd 模式。

我没有尝试将文件包含在 SQL 中,而是尝试在运行之前将所有 XML 包含在文件中。

例如

set @xml = '<?xml version="1.0" encoding="utf-8" ?>
:r .\xml\XML_1.xml'
';

这种方法的主要问题是我必须在集合中包含 xml 声明,因为 sql cmd 代码必须存在于它自己的行上,但在 xml 文件的开头和声明之间不能有回车.

于 2012-11-09T09:49:15.870 回答