10

OK、SQL Server 2008 を使用していて、type のテーブル フィールドがありますVARCHAR(MAX)。問題は、 を使用して情報を保存するときに、フィールドHibernateの内容がVARCHAR(MAX)切り捨てられることです。アプリ サーバーにもデータベース サーバーにもエラー メッセージは表示されません。

このフィールドの内容は単なるプレーン テキスト ファイルです。このテキスト ファイルのサイズは 383KB です。

これは、この問題をトラブルシューティングするためにこれまでに行ったことです。

  1. データベース フィールドVARCHAR(MAX)を TEXT に変更すると、同じ問題が発生します。

  2. SQL Server プロファイラーを使用したところ、データベース サーバーがフル テキスト コンテンツを受信して​​いることに気付き
    ましたが、切り捨ての問題がある SQL を表示しようとすると、何らかの理由でプロファイラーがフリーズします。私が言ったように、フリーズする直前に
    、フル テキスト ファイルのコンテンツ (383KB) が受信されていることに気付いたので、データベースの問題である可能性があります。

以前にこの問題に遭遇した人はいますか? この切り捨ての原因は何ですか?

注: SQL Studio に移動し、TEXT フィールドの内容をコピーして Textpad に貼り付けるだけです。それが切り捨てられていることに気づいた方法です。

前もって感謝します。

4

3 に答える 3

24

あなたの問題は、Management Studio がすべてのデータを表示しようとしていると考えていることです。そうではありません。[ツール] > [オプション] > [クエリ結果] > [SQL Server] に移動します。Results to Grid を使用している場合は、「Maximum Characters Retrieved」を「Non XML data」に変更します (Results to Grid は CR/LF を排除することに注意してください)。Results to Text を使用している場合は、「各列に表示される最大文字数」を変更します。

ここに画像の説明を入力

もっと入力したくなるかもしれませんが、Management Studio 内で返せる最大値は次のとおりです。

65535 for Results to Grid
8192  for Results to Text

本当にすべてのデータを Management Studio で表示したい場合は、XML に変換してみることができますが、これにも問題があります。最初に [Results To Grid] > [XML データ] を 5 MB または無制限に設定してから、次の操作を行います。

SELECT CONVERT(XML, column) FROM dbo.table WHERE...

これで、リンクが実際にクリック可能なグリッド結果が生成されます。これにより、データが XML に変換された新しいエディター ウィンドウ (クエリ ウィンドウではないため、実行ボタンや IntelliSense などはありません) が開きます。これは>>etc に置き換えられることを意味します。簡単な例を次に示します。

SELECT CONVERT(XML, 'bob > sally');

結果:

ここに画像の説明を入力

グリッドをクリックすると、次の新しいウィンドウが表示されます。

ここに画像の説明を入力

(これは、XML 形式を検証する IntelliSense を備えているため、波線が表示されます。)

牧場に戻る

健全性チェックだけが必要で、383K をすべて別の場所にコピーしたくない場合は、そうしないでください。以下を使用して確認してください:

SELECT DATALENGTH(column) FROM dbo.table WHERE...

これは、データがデータベースによってキャプチャされたことを示しているはずであり、問​​題はツールと検証方法にあります.

(私はそれ以来、これについてのヒントをここに書いています。)

于 2012-06-14T20:32:44.597 に答える
4

使ってみて SELECT * FROM dbo.table for XML PATH

于 2014-12-30T04:04:00.693 に答える