iT邦幫忙

0

SQL Server BCP匯出Excel報表找不到檔案/錯誤

請問各位,BCP在路徑上的使用方式應該如何設定?因為碰到執行成功但是沒有產生檔案,以及目標路徑但是卻執行失敗(無法開啟BCP的主資料檔)

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
//皆已開啟組態選項

EXEC master..xp_cmdshell 'bcp "SELECT * FROM TESTDB.dbo.testform " queryout C:\test.xlsx -c -q -S"servername" -U"sa" -P"sa"'

https://ithelp.ithome.com.tw/upload/images/20190418/20116501tmlreWOKWP.png
↑如執行上述語法,訊息顯示成功執行,但是到C槽發現找不到檔案,可能是因為作業系統不讓使用者在根目錄下新增非資料夾的檔案
https://ithelp.ithome.com.tw/upload/images/20190418/201165013cPloJd9wg.png
↑已試過將所有使用者設為完全控制沒是沒有辦法解決

EXEC master..xp_cmdshell 'bcp "SELECT * FROM TESTDB.dbo.testform " queryout C:\AA\test.xlsx -c -q -S"servername" -U"sa" -P"sa"'

https://ithelp.ithome.com.tw/upload/images/20190418/20116501wOF1n62ne4.png
↑所以試試看更改路徑,但是就發生錯誤,可能是路徑上的C槽就因為沒有存取權限,所以之後的路徑也都被視為拒絕存取嗎?請問是否有解決辦法

在CMD執行的結果也和在SSMS的結果一樣

看更多先前的討論...收起先前的討論...
is C:\ not C:
試過把檔案生到下一層目錄如 C:\Temp\test.xlsx
fufujane iT邦新手 5 級 ‧ 2019-04-18 17:28:54 檢舉
窮嘶發發發 :
感謝提醒~不過加上去之後還是一樣的情形耶

fuzzylee1688:
感謝回應,但是第二段程式碼就是存放於我新開的一個AA資料夾底下,但是還是一樣的結果
有加 " ??? "C:\Temp\test.xlsx"
請用 系統管理者權限 執行 CMD 之後再做 BCP 指令
fufujane iT邦新手 5 級 ‧ 2019-04-19 09:56:46 檢舉
fuzzylee1688:
請問"???"是什麼意思呢,目前在CMD用系統管理者執行是可以的,但是在SQL還是沒辦法

窮嘶發發發:
感謝,在CMD用系統管理者權限執行是可以的,但是才發現BCP沒有辦法匯出欄位名稱,且不知SQL是否有語法可以用系統管理者權限去執行SQL語法的查詢?
我是說你的輸出絕對路徑名稱有沒有用 "" 包起來.. 因為反斜線\ 可能被DB Procedure 給處理掉了.. 加了比較保險.
fufujane iT邦新手 5 級 ‧ 2019-04-19 11:38:09 檢舉
fuzzylee1688:
感謝,已加上但是現在在SQL查詢下還是顯示無法開啟BCP的主資料檔;現在朝向在C#寫入開啟CMD-輸入BCP指令執行的方式匯出報表的方式,謝謝!!
fufujane iT邦新手 5 級 ‧ 2019-04-19 16:21:19 檢舉
不好意思,在使用上又發生問題,如果可以還請過目,謝謝:
1.
bcp HC.dbo.sale out "C:\Users\User\Desktop\test.xlx" -c -q -S"USER-3000EEE49B" -U"sa" -P"sa"
我在CMD系統管理者身分使用BCP匯出.xls及.xlsx的檔案都會毀損(已試過3台電腦),有哪邊設定錯誤嗎?

2.據知BCP沒有辦法一起撈出欄位名稱,請問有推薦那些方式可以用程式加入欄位名稱嗎?(CREAT VIEW 會造成nvarchar 轉換到 numeric 錯誤、C#的interop.excel 因為檔案毀損無法開啟編輯,會另外跳出一個txt檔)

尚未有邦友回答

立即登入回答