我正在尝试在 SQL Server 代理作业中使用XML.modify修改 XML 值。我正在使用 SQL Server 2008。这是我的代码...
DECLARE @temp XML;
DECLARE @newname VARCHAR(50);
SELECT @temp = CAST(ExtensionSettings AS XML) FROM [ReportServer].[dbo].[Subscriptions] WHERE SubscriptionID = 'a2e1dd4e-5f65-4f0e-bc5a-8e58d21d7292';
SET @newname = 'Monthly_Data_' + CONVERT(VARCHAR(7), DATEADD(day, -1, GETDATE()), 120);
SET @temp.modify('replace value of (/ParameterValues/ParameterValue/Value[../Name/text()="FILENAME"]/text())[1] with sql:variable("@newname")');
UPDATE [ReportServer].[dbo].[Subscriptions] SET ExtensionSettings = CAST(@temp AS varchar(2000)) WHERE SubscriptionID = 'a2e1dd4e-5f65-4f0e-bc5a-8e58d21d7292';
如果我只是在查询窗口中运行此代码,它运行良好,但是当我将其作为工作中的一个步骤运行时,工作会失败。问题似乎出在线路上...
SET @temp.modify('replace value of (/ParameterValues/ParameterValue/Value[../Name/text()="FILENAME"]/text())[1] with sql:variable("@newname")');
因为如果我将其注释掉并运行该作业,它就可以完成。
XML.modify 不能在工作中使用吗?我错过了什么?!
谢谢