沒有運行我有一個運行正常使用SSMS執行命令,但是把同樣的命令作業中的存儲過程提供了以下錯誤的工作。存儲過程手動運行時,從SQL Server代理
9行,字符9,輸入
代碼需要很長的XML字符串以UTF-8編碼並將其放入單個nvarchar(max)
細胞的意外結束。然後將此字符串放入另一個表中的XML單元格中,從而允許使用節點函數查詢XML代碼的各個部分。由於編碼差異,我無法將數據直接放入nvarchar
單元格中。
我不能在這裏重現字符串,因爲它是非常非常長。
我只是在尋找創意真的爲它可能會錯誤。
以下是我目前所知:
的程序沒有問題,手動
我檢查的權限問題執行時運行,而且似乎並不成爲問題。代理下我自己的帳戶運行,我是一個系統管理員,數據庫
上我將過程拆分爲獨立的部分來定位究竟在何處發生問題。手動執行時單獨程序再次運行良好,但在運行SQL Server代理程序時發生錯誤。
當查詢通過SQL Server代理單獨運行它給出了一個稍微不同的錯誤。這使我相信這是一個編碼問題。不過,我從網頁獲取XML,但無法更改網頁上的編碼。
1號線,38字符,無法切換編碼
我知道這是一個長鏡頭,因爲你不能複製的問題,但如果有人可以給出一個想法,從哪裏開始尋找答案,將不勝感激。
編輯1:非常感謝您的幫助。我不得不花一點時間離開這個問題來清理我的頭腦。回到它本週。
好吧,我想我終於想通了問題的根源。這是我用來從網站獲取數據的代碼。它會截斷從網站中提取的數據。它在SSMS中執行時運行完美。它在運行批處理文件時將數據截斷爲2048個字符,並在使用SS作業運行時將數據截斷爲512個字符。
這些值不能是隨機的。必須有一個設置,但我找不到它。有任何想法嗎?
下面的代碼:
DECLARE
@url nvarchar(max),
@win integer,
@hr integer ,
@Date date,
@SearchDate nvarchar(50)
Delete from XMLParsing.dbo.TextData
Set @Date = GETDATE()
set @SearchDate = CAST(@Date as nvarchar(50))
set @SearchDate = REPLACE(@SearchDate,'-','')
Select @url = 'http://semorep.sem-o.com/DataCollection/DataSets.asmx/queryDatasetXML?DatasetName=SET_CAL&[email protected]&Password=testsemo&FromDate=20130103&ToDate=20130111&P1=Energy&P2=Statements&P3=Initial&P4=&P5='
EXEC @hr=sp_OACreate 'WinHttp.WinHttpRequest.5.1',@win OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win, 'Open',NULL,'GET',@url,'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win,'Send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
INSERT XMLParsing.dbo.TextData(SEMO_Data)
EXEC @hr=sp_OAGetProperty @win,'ResponseText'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OADestroy @win
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
你能告訴我們第9行9個字符是什麼嗎? –
正如我們可以看到你說你有權限但連接字符串連接不同的用戶?如果是的話,它有權限。 – Necro
您是否將該命令放入作業中,或者在作業中存儲過程調用? –