2014-11-03 50 views
0

我試圖在SQL Server代理作業中使用XML.modify修改XML值。我使用的是SQL Server 2008的下面是我的代碼...SQL Server代理作業中的XML DML(修改)

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不能用於工作嗎?我錯過了什麼?!

感謝

+0

什麼是錯誤信息? – 2014-11-03 22:51:35

回答

0

我曾在這個好今天的一部分,終於發佈我的問題,並及時找到了答案!

我終於發現如何查看作業運行歷史記錄(右鍵點擊作業,查看歷史記錄)。那裏提到QUOTED_IDENTIFIER設置錯誤。 Google搜索稍後會告訴我,代理作業默認會關閉QUOTED_IDENTIFIER(https://dba.stackexchange.com/questions/52802/sql-server-agent-quoted-identifier)。

我增加了行......

SET QUOTED_IDENTIFIER ON 

我的工作的一步,它開始工作!