2013-02-14 54 views
11

我在包含〜35k個字符的數據庫表中有一個VARBINARY(MAX)字段。這個字段是一個轉換後的word文檔,很遺憾不再有權限訪問。將大字段(varbinary(max))複製到文件/剪貼板

此字段存在於我的開發數據庫中,我正在尋求將此值移植到實時數據庫。但是,如果我純粹從SQL中的網格結果中選擇內容,我似乎只得到約28k的可用字符。

所以我的問題是,這是什麼是最好的方式來遷移一個字段,其內容太大,以至於無法簡單複製並粘貼到並插入腳本?

任何想法非常感謝。

編輯:

隨着更多的信息,結果輸出到文件(儘管到.TXT)似乎給了我不是通過電網更少字符。如果我將查詢結果導出到文件後運行查詢到網格,我似乎得到了當時查詢窗口中的內容的字面表示(所以如果我拉伸窗口,比壓縮列寬度更多的字符)

+1

使用'Generate Scripts'選項產生輸出數據腳本? – 2013-02-14 17:17:49

+0

也許你可以使用SSMS導出數據功能...... – Daniel 2013-02-14 17:55:33

回答

1

您可以簡單地將結果導出(另存爲)到csv。

1)運行在SSMS查詢
2)結果是在網格格式
3)右鍵單擊網格顯示,並選擇結果另存爲
4)選擇CSV或文本文件
的格式 5)將結果保存到文件

這種方式將導出所有數據,並從那裏您可以選擇所有您想要的文本。

注:使用SSMS 2012中進行這些步驟,但應該是在2008年和其他數據庫管理工具

+0

我相信這樣會簡單地將字符串保存爲從任何數據限制和從查詢結果窗格中截斷的數據,不是嗎? – 2013-02-14 18:28:07

+0

@Tim Lehner,是的,我相信是這樣,當我試圖將結果保存到文件時,我會看到這一點,儘管如此,我並沒有明確地嘗試在查詢到網格後保存結果,直接輸出到文件 – dougajmcdonald 2013-02-14 21:37:00

0

跳過電網相同或相似的
在SSMS查詢結果以文件
運行查詢

或者你爲什麼不使用鏈接服務器直接插入

我測試並保存到文件不截斷。

你可以使用.NET與DataReader和.GetBinary?

+0

查詢文件的結果似乎給我的結果少於網格,〜500個字符。無可否認,我將文件保存爲.txt,但我的理解是,它至少會輸出整個列。由於網絡拓撲結構和相關的安全問題,鏈接服務器在這種情況下是不可能的。我只能通過ftp傳輸文件到實時系統恐怕:( – dougajmcdonald 2013-02-14 21:34:23

+0

這似乎不起作用,查詢結果到文件也被截斷 – 2015-12-08 16:25:10

+0

然後我會用.NET SQLDateReader做適當的處理對於長的XML,我甚至必須做多個Get – Paparazzi 2015-12-08 16:30:49

22

爲了可靠地複製大串出你的SSMS查詢結果窗格中,要密切關注以下設置(我看着SSMS 10.50.2500.0現在):

Tools > Options > Query Results > SQL Server > Results to Grid 
    Max chars retreived: 
     Non-XML: 65535 
     XML: Unlimited 

Tools > Options > Query Results > SQL Server > Results to Text 
    Max chars displayed:  
     8192 

您可能至少需要打開一個新的查詢窗口才能應用設置。請注意,由於XML無限制,因此您可以將潛在轉換爲XML以獲得完整結果。在這種情況下,你不妨做到以下幾點:

select cast(convert(varchar(max), MyColumn, 1) as xml) -- Use style 1 to get "0x..." 

所有這一切說,可能會有更好的(和自動化/可重複性)方法如其他人所說的走動您的系統的數據:

  • 設置一個linked server只需運行一個INSERT語句
  • 使用openrowset查詢遠程服務器
  • SSMS:導出數據,生成腳本,結果到文件
  • 個SSIS
  • 第三方工具(展鵬數據比較等)
+0

SSMS設置是一個有趣的選項,並且通過有趣的閱讀'easy'(這是可取的!)將在明天早上進行檢查。 – dougajmcdonald 2013-02-14 21:35:36

+0

好的解決方案運行良好 – sjclark76 2016-03-08 20:51:04

2

SSMSBoost附加的SSMS我開發的有2個功能,可以幫助您:

  1. 它可以「可視化「文檔保存在ResultsGrid的單元格中。所以你將能夠從SSMS中正確地看到你的文檔。鏈接:http://www.ssmsboost.com/Features/ssms-add-in-results-grid-visualizers-feature

  2. 它可以將所有字節從單元複製到剪貼板。您可以將數據粘貼到一些「好」的文本編輯器中,並將其保存爲.doc。但是第一種解決方案比較好,只要你直接得到Word文檔:http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaks

+0

是的 - SSMS Boost是我每天都使用的優秀免費工具。例如,如果我不能按F2來編寫光標所在的任何數據庫對象的腳本,我就不能再生活了(只需要清楚,我與它沒有任何關係,只是一個hap py用戶) – DaveBoltman 2017-08-03 08:48:52