2013-03-27 162 views
0

我必須在SQL Server 2008(也在2005年)中調試大型存儲過程。使用輸出文件調試Sql Server存儲過程

因爲我不能進入該程序StepByStep,我需要使用一些輸出文件進行調試。

其實我使用類似

DECLARE @SQL VARCHAR(8000) 
SELECT @SQL = 'BCP "SELECT * FROM MY_TABLE" QUERYOUT "D:\TDB\test.txt" -C -T -w' 
EXEC MASTER..XP_CMDSHELL @SQL 

但這種方法有一個像不可能使用#表,並使用過濾器(一種複雜的方式多限制,其中X ='+ CAST(@MYLocalVar爲varchar)+ 「)......

有沒有其他的方式來輸出選擇到一個文件中,像MySql的

SELECT * into outfile '../../htdocs/VIP/Temp/temp.txt' from tmp_Menu2; 
+0

爲什麼不把結果輸出到一個表中,可能在另一個數據庫中,並調查? – 2013-03-27 14:43:03

+0

但我需要創建一個表,每次列應該對應於具體情況,通過ex連接或選擇性選擇...有點令人尷尬,如果我使用其他數據庫,我需要在其他數據庫中構建表。 .. – serhio 2013-03-27 14:48:41

回答

0

你可以把數據插入到表很容易:

SELECT * 
into  anotherdatabase..outtable 
from . . . 

這將創建任何你想要的列的新表。

要將某些內容輸出到文件中需要額外的步驟,使用bulk export

+0

首先,我需要爲我的每個選擇手動創建一個表。 其次,我需要爲每個循環創建分隔的多個輸出(在一段時間內,由ex)。我可以把它輸出到不同的輸出文件「myFile」+ @ currrentId +「.txt」 – serhio 2013-03-27 14:58:31

+0

批量導出不在同一個會話中,所以我不能使用#tables來傳輸。 – serhio 2013-03-27 15:20:21

+0

要使用臨時表,您需要使用全局臨時表。 。 。 ##表。您也可以使用xml結合結果,但是這需要對查詢進行更多的更改,而不僅僅是添加'into'子句。 – 2013-03-27 15:21:24