17

~35k 文字を含むデータベース テーブルに VARBINARY(MAX) フィールドがあります。このフィールドは変換された Word 文書であり、残念ながらアクセスできなくなりました。

このフィールドは開発データベースに存在し、この値をライブ データベースに移植しようとしています。ただし、グリッドの結果から純粋にコンテンツを選択すると、SQL で使用可能な文字が最大 28k しか取得できないようです。

だから私の質問はこれです.コンテンツが大きすぎて単純にコピーして貼り付けてスクリプトを挿入できないフィールドを移行する最良の方法は何ですか?

どんな考えでも大歓迎です。

編集:

追加情報として、結果をファイル (.txt ではあるが) に出力すると、グリッド経由よりも少ない文字数が得られるようです。クエリをグリッドに実行した後、クエリ結果をファイルにエクスポートすると、その時点でクエリ ウィンドウに表示されている内容がリテラルに表現されているように見えます (したがって、ウィンドウを拡大すると、列幅を圧縮した場合よりも多くの文字が得られます)。

4

4 に答える 4

30

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..."

そうは言っても、他の人が言及しているように、システム内でデータを移動するためのより良い(そして自動化/再現可能な)方法があるかもしれません:

  • リンク サーバーをセットアップして、単に挿入ステートメントを実行する
  • openrowsetを使用してリモート サーバーにクエリを実行する
  • SSMS: データのエクスポート、スクリプトの生成、結果のファイルへの出力
  • SSIS
  • サードパーティ ツール (Redgate Data Compare など)
于 2013-02-14T18:17:23.793 に答える
2

私が開発した SSMS 用の SSMSBoost アドインには、次の 2 つの機能があります。

  1. ResultsGrid から直接、セルに保存されたドキュメントを「視覚化」できます。そのため、SSMS から直接ドキュメントを Word で表示できます。リンク: 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

于 2013-02-15T09:54:57.740 に答える
1

結果を csv にエクスポート (名前を付けて保存) するだけです。

1) SSMS でクエリを実行します
2) 結果はグリッド形式で表示されます
3) グリッドを右クリックし、[結果を名前を付けて保存] を選択します
4) csv またはテキスト ファイルの形式を選択します
5) 結果をファイルに保存します

この方法でエクスポートされますすべてのデータが表示され、そこから必要なすべてのテキストを選択できます。

注: これらの手順は SSMS 2012 を使用して行われましたが、2008 およびその他のデータベース管理ツールでも同じまたは類似している必要があります。

于 2013-02-14T17:18:28.513 に答える
0

グリッドをスキップ
In SSMS Query Results To File
クエリを実行

または、リンクサーバーを使用して直接挿入しないのはなぜですか

テストしたところ、ファイルに保存すると切り捨てられます。

DataReader と .GetBinary で .NET を使用できますか?

于 2013-02-14T18:05:41.037 に答える