2017-02-16 856 views
0

我們最近將所有數據庫從MyServerA移至MyServerB。一切都工作得很好的MyServerA,但是當我嘗試調用使用xp_cmdshellbcp命令,我收到以下錯誤:SQL Server無法打開BCP主機數據文件

Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file 

一些信息:

  1. 我敢肯定,我的用戶m登錄作爲MyServerB已分配給我試圖發佈到遠程服務器位置的權利。我在命令提示符下運行了「whoami」,併成功將它們添加到遠程文件夾(btw是共享的)的完全控制下的安全性。另外,我可以映射到它或很好地訪問它。

  2. 有趣的是,當試圖發送一個已經存在的文件時,即從我試圖發送到的相同位置,作爲使用sp_send_dbmail的附件,我得到了Access denied消息。所以這似乎是一個安全問題。但請參閱上面的#1。

  3. 我也試過將它保存在本地MyServerB的文件夾中,但我也做不到。

示例代碼:從xp_cmdshell的

DECLARE @bcp varchar(2000); 

SET @bcp = 'bcp "SELECT 1" queryout "\\MyServerA\Reports\MyFile.txt" -c -T -S MyServerB'; 

EXEC master..xp_cmdshell @bcp; 
+0

'bcp'是*不*文本輸出工具。你爲什麼不使用SSIS?您必須提升權限才能運行'xp_cmdshell'應該是一個警告。 –

+0

無論如何,爲什麼從SQL Server內部運行'bcp'?您可以從命令行運行它,或者安排它在計劃任務中定期運行。您也可以安排命令從SQL代理運行。運行'xp_cmdshell'需要弱化安全性。 –

+0

這是我繼承的東西。我現在被授權更新到SSIS或更改腳本或方法。這是以前的工作,他們希望它現在是固定的。謝謝你的建議。 – ptownbro

回答

0

去了一位朋友誰是專家。問題是我需要爲SQL Server試圖執行xp_cmdshell的serivce帳戶提供權限。

挑戰在於,在查看與正在運行的SQL Server服務關聯的「登錄」帳戶時,「服務」帳戶被命名有所不同。這有一個NT帳戶與默認實例名稱相關聯。您想要選擇的是名爲「SERVICE」的帳戶。

此外,舊機器似乎無需將此帳戶添加到該權限即可使用。

無論如何,它現在有效。

感謝您的幫助和關注。

0

運行WHOAMI,我相信它會給你一個線索接下來需要做的事情。

+0

我確實運行過「whoami」,這就是爲什麼我確信權限設置正確 – ptownbro

相關問題