我有幾個條目,這種問題,並沒有一個似乎爲我解決它。大容量插入失敗SQL代理作業,文件未找到
我的SQL SERVER和SQL SERVER AGENT服務都設置爲相同的用戶帳戶。
我有一個存儲過程,其執行以下操作(錯誤檢查cruft的移除)
exec XP_CMDSHELL 'net use P: \\machine/share password /user:machine\user'
exec XP_CMDSHELL 'dir p: /b /a-d-h-s > p:\dir.txt'
CREATE TABLE #FilesTemp (Filename varchar(200))
BULK INSERT #FilesTemp
FROM 'p:\dir.txt'
WITH
(
ROWTERMINATOR = '\n'
)
當我運行從SSMS存儲過程,它運行良好。當我通過作業運行它時,XP_CMDSHELL調用正常工作,並創建'dir.txt'文件。但批量插入失敗,錯誤3(找不到p:\ dir.txt)。
我登錄到SSMS,使用'sa'連接到SQL Server,並且作業歸sa所有。正在創建共享的用戶具有必要的權限。
更多信息:
有放置(然後刪除顯然)評論詢問我是不是從服務器計算機上運行SSMS與否。我嘗試過這個。
顯然,當我使用Windows身份驗證運行時,大容量插入失敗,但是作爲SA運行存儲過程時,它工作。代理正在使用Windows身份驗證運行並失敗。
但是爲什麼?我無法理解安全問題。
有什麼想法?
的安全 輪廓不幸的是,我得到一個登錄錯誤,當我嘗試。 –
問題是批量複製是在SQL Server的安全上下文中完成的。你不能使用映射驅動器,只能使用unc路徑。如果服務器帳戶不能被授予訪問權限,那麼將該角色複製到本地驅動器並從那裏導入 – Mike
顯然,使用sa登錄到SQL Server時它運行良好。查看更新的帖子。所以,它*可以*使用映射的驅動器。但是,顯然存在安全問題。 –