PRB: セット CONCAT_NULL_YIELDS_NULL が発生する可能性がありますストアド プロシージャの再コンパイルするには

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

294942
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
実行されるたびにストアド プロシージャが CONCAT_NULL_YIELDS_NULL を設定するステートメントを含むステートメントを CONCAT_NULL_YIELDS_NULL の現在の設定を変更する場合に、プロシージャがリコンパイルされます。これは、パフォーマンスの問題可能性があります。
原因
CONCAT_NULL_YIELDS_NULL の設定を変更する結果とコマンドの解釈方法が変更されるため、再コンパイルが必要です。SQL Server 7.0 と 2000 の SQL Server で、CONCAT_NULL_YIELDS_NULL ON に設定既定では、ANSI 規格に準拠します。

CONCAT_NULL_YIELDS_NULL をオフに設定が接続して ODBC および OLE DB このプロパティに設定するためにデータベース レベルは目的の結果が表示されません。(これが少し接続パケットでされているため、プロファイラーの SQL このプロパティが設定されていることが表示されません。)
回避策
CONCAT_NULL_YIELDS_NULL では、ストアド プロシージャの内部には設定しません。推奨されるソリューションは、ISNULL 関数を使用して文字列を連結するときにです。

たとえば、クエリは次のとおり記述する必要があります。
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + ISNULL(@lastname,'') + '%'				
次のようにではなく。
SELECT * FROM mytable WHERE name LIKE 'Xavier ' + @lastname + '%'				
お勧めできませんが、代替解決策は、ストアド プロシージャを実行する前に、CONCAT_NULL_YIELDS_NULL を設定するステートメントを実行することです。
詳細
ストアド プロシージャをこの記事のアドレスは 1 つだけためを再コンパイルすることができます。詳細については、「サポート技術情報」資料を参照するには、次の文書番号をクリックしてください。
243586 INF: ストアド プロシージャの再コンパイルのトラブルシューティング

警告: この資料は、自動翻訳されています

プロパティ

文書番号:294942 - 最終更新日: 01/16/2015 22:13:23 - リビジョン: 6.0

  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • kbnosurvey kbarchive kbprb kbmt KB294942 KbMtja
フィードバック