2012-09-25 64 views
2

我一直在努力研究一個大型多重連接的SELECT語句的結果,並將查詢結果作爲CVS文件發送。 我有正確的查詢和電子郵件,但我無法自動導出結果作爲CVS文件。從我所閱讀的內容來看,自動導出查詢結果的最佳選擇是一種名爲「BCP」的工具。xp_cmdshell本機錯誤208,SQL Server 2008 R2中的BCP

我試圖Management Studio中使用BCP這樣的:

USE FootPrint; 

DECLARE @sql VARCHAR(2048); 
DECLARE @dir VARCHAR(50); 

SET @dir = 'C:\Users\bailey\Desktop'; 
SET @sql = 'bcp "SELECT TOP 10 * FROM datex_footprint.Shipments" queryout "' + @dir + '" -c -t, -T'; 

EXEC master..xp_cmdshell @sql; 

足跡是一個特定的數據庫的名稱,並datex_footprint的模式。 (這不是真正的查詢,只是一個測試)。

當我運行它,我得到的錯誤是: 「SQLSTATE = S0002,NativeError = 208」 「錯誤= [微軟] [SQL Server本機客戶端10.0] [SQL服務器]無效的對象名稱datex_footprint.Shipments 」「。

我100%肯定datex_footprint.Shipments是我試圖測試的數據的正確模式\表訪問。

有沒有人看到我失蹤或做錯嘗試將此結果導出到CSV文件?具體來說,我試圖自動化這個過程。我知道如何將結果導出到CSV文件中,但我希望在T-SQL中這樣做,這樣我就可以在一天中的某個時間自動生成文件。

任何幫助,將不勝感激!

回答

3

[求助]

我想通了我做錯了什麼。我並沒有完全確定這個觀點。我正在使用「schema.Table/View」,而不是「database.schema.table/view」。 此外,我添加了「-S」+ @@ SERVERNAME標誌 - 它告訴BCP實用程序使用SQL Server當前連接的服務器進行查詢。

正確的代碼來生成在T-SQL一個SELECT查詢的結果的CSV文件,SQL Server 2008是:

DECLARE @sql VARCHAR(8000); 

SELECT @sql = 'bcp "SELECT * FROM FootPrint.datex_footprint.Shipments" queryout "C:\Users\bailey\Desktop\FlatTables\YamotoShipping.csv" -c -t, -T -S' + @@SERVERNAME; 

exec master..xp_cmdshell @sql; 

所以一旦我說的 「足跡」。確定數據庫,它的工作。

注意:我正在運行SQL Server 2008 R2。

0

我得到了同樣的錯誤,但我用不同的方式解決了它。 我已將默認數據庫添加到我的ID,然後BCP開始在我的默認數據庫中查找表並處理這些文件。