2013-02-22 73 views
-1

我有一個複雜的查詢,將數據編組到一個臨時表,然後我編組成一個進一步的輸出臨時表,然後最終選擇它顯示到屏幕上。這將從網格視圖中保存到文本中,並獲取我需要的用於異地處理的文件。SSMS查詢到文本文件

我想要做的是讓此查詢可以運行並在本地磁盤上創建該文件,而不需要操作員更改「結果至」選項或任意操作。

我可以使用哪些命令或功能來執行此操作?

我無法安裝任何存儲過程或類似於所涉及的服務器。

+0

當你說你不能將任何存儲過程安裝到服務器時,你只是指現有的數據庫?是否有可能創建一個新的數據庫來保存你的代碼?對於用於供應商數據庫的實例,這是一種相當常見的做法。 – 2013-02-22 15:15:26

+0

服務器期間不能安裝任何內容,因此不能將其加載到SP中並推薦BCP:o) – Paul 2013-02-22 15:18:52

+0

您可以創建計劃任務嗎?你可以使用osql重定向到一個文件。 http://www.sqlservercentral.com/Forums/Topic424456-8-1.aspx#bm424460 – 2013-02-22 16:09:36

回答

2

既然你不能在服務器上做任何事情,我會建議你寫一個SSIS包。創建一個數據流,並在你的源對象中放置你的腳本。您的目標對象將指向您想要的文件。你有相當數量的輸出選項。

SSIS包然後可以通過

  1. 一個SQL工作(假設你甚至允許)
  2. 運行一個批處理文件與DTEXEC命令
  3. 的DTEXECUI GUI非SQL作業運行。

此外,您可以將SSIS包存儲在實例中或您選擇的任何文件共享中。

+0

這聽起來很合理,但我以前從未打開BIDS或SSIS包。似乎有95%的刺傷,但可悲的是無法建立一個成功的來源。我的查詢可能太複雜了,只是將它粘貼到SQL Command中。 – Paul 2013-02-27 16:25:23

+0

我通常使用一個OLE DB源,但我從來沒有嘗試過把一個巨大的查詢。您可以選擇從變量中提取查詢,這可能會更好。或者,您可以嘗試使用可從文件中提取代碼的ExecuteSQL任務。我不確定這是如何工作的,但是你可以嘗試在tempdb中創建一個表,使用tempdb; GO CREATE TABLE dbo.mytemptable 然後從源文件中將表引用爲tempdb.dbo.mytemptable。然後,您的數據流中有另一個EXECUTE SQL任務刪除表。 – 2013-02-27 17:21:32