2012-06-08 13 views
0

我想導出到使用BCP這樣的CSV文件:SQL Server 2008中BCP出口拋出:NativeError = 945,數據庫無法打開,由於無法訪問文件或內存不足

DECLARE @SQL AS VARCHAR(1000) 
DECLARE @CMD AS VARCHAR(8000) 

SET @SQL='SELECT * from Pondor.dbo.tblLD' 
SET @CMD = 'bcp "' + @SQL + '" QUERYOUT "' + @FILE + '" -c -t "," -U"UserA" -P"Password" 

exec master..xp_cmdshell @cmd 

這不起作用並拋出以下錯誤:

SQLState = 37000, NativeError = 945
Database 'Pondor' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.

做一個SELECT * from Pondor.dbo.tblLD工作並返回行。有關BCP命令有什麼問題的任何想法?

+1

當發出該命令的用戶是sysadmin組的成員時,將在運行SQL Server服務的安全上下文中執行xp_cmdshell。當用戶不是sysadmin組的成員時,xp_cmdshell將模擬使用xp_sqlagent_proxy_account指定的SQL Server代理代理帳戶。 很可能你的用戶沒有權限訪問你的文件。 –

回答

1

您沒有在您的命令中指定服務器。使用正確的值添加-S選項。如果你的服務器是服務器上的「默認」例如,你可以把-S.

的步驟來修復數據庫打開錯誤是由Pinal Dave

  1. 解釋的。如果可能的或者通過添加更多的硬盤空間從硬盤中刪除不必要的文件或添加更大尺寸的新硬盤。

  2. 檢查數據庫是否設置爲自動增長。

  3. 檢查試圖訪問數據庫的帳戶是否具有足夠的權限執行操作。

  4. 確保.mdf和.ldf文件未在操作系統文件系統級別標記爲只讀。

+0

我接受你的答案,因爲它似乎是一個數據庫問題。我在測試服務器上運行它,它給我的錯誤,但當我改變到不同的服務器,它沒有任何問題的工作。感謝您的建議和鏈接,這將有助於對測試數據庫進行故障排除。 –

相關問題