2014-03-05 20 views
-1
EXEC xp_cmdshell 'bcp "select * from employee" queryout "C:\bcptest2.txt" -T 
-SDemo -Usa -PPassword1 -c -t' 

一個文件,當我跑上面的命令創建一個文件,並從employee表中的記錄存儲在文件中,但我得到了錯誤如何將查詢的結果寫在SQL Server

SQLState = S1000, NativeError = 0 
Error = [Microsoft][SQL Server Native Client 11.0] 
Unable to open BCP host data-file NULL 

- 測試2

DECLARE @querytextNoVid VARCHAR(100) 
DECLARE @querytext VARCHAR(100) 
DECLARE @filelocation VARCHAR(100) 
DECLARE @cmd VARCHAR(255) 
IF OBJECT_ID('tempdb..#data2') is not null 
begin 
drop table #data2 
END 
CREATE TABLE #data2(name varchar(100),addres varchar(100)) 
insert into #data2 select 'Manas','pratap' 
insert into #data2 select 'Ranga','Sasi' 
select * from #data2 
EXEC xp_cmdshell 'bcp "select * from #data2" queryout "C:\test\bcptest2.csv" -T -Sdemo -Usa -PPassword1 -c -t' 

當我運行上面的腳本我得到了錯誤,如

NULL 開始複製... SQLState = S0002,NativeError = 208 錯誤= [Microsoft] [SQL Server Native Client 11.0] [SQL Server]無效的對象名'#data2'。 SQLSTATE = S1000,NativeError = 0 錯誤= [微軟] [SQL Server本機客戶端11.0]無法解析列級排序規則 NULL BCP複製出失敗的上述錯誤 NULL

--Any幫助

回答

0

我覺得寫權限的SQL Server服務的用戶NT服務\ MSSQLSERVER喲你在查詢中沒有使用數據庫名稱,這就是錯誤的原因。

你有你的SELECT語句像這樣:

select * from DatabaseName.SchemaName.employee 

或者,你必須提供一個參數指定數據庫名稱,如:

EXEC xp_cmdshell 'bcp "select * from employee" queryout "C:\bcptest2.txt" -d "DatabaseName" -T -SDemo -Usa -PPassword1 -c -t'