3

SQL Server (2000 または 2005) では、データベースまたはサーバーの照合順序を設定して、識別子名 (テーブル、列など) の大文字と小文字を正しくする必要がありますか? もしそうなら、それは大文字と小文字を区別するすべての照合に当てはまりますか、それとも別の設定ですか? (オブジェクトの名前ではなく、データに適用される大文字と小文字の区別を常に考えてきました)。

ストアド プロシージャとクエリが一貫した大文字と小文字で記述されていない場合、これはおそらくアプリケーションを壊すでしょうか? データベース接続の照合を設定するなど、すべてのクエリで大文字と小文字が正しく使用されるようにする必要なく、これに対処する方法はありますか?

私はこれを、一貫性のないSQLコードを含む既存のアプリケーションを持つという観点から見ており、異なる照合順序でデータベースに対して実行できるようにしたいと考えています。どのような設定が必要か、またはアプリケーションを使用できないデータベース/サーバー照合のセットは?

4

4 に答える 4

1

データベースの既定の照合順序は、データベース内のオブジェクトがクエリで大文字と小文字を区別して処理されるかどうかを決定します。これは、すべてのオブジェクト名 (テーブル、列など) に適用されます。

アプリケーション コードが大文字と小文字を区別しない照合データベースからのものである場合、オブジェクトが誤って参照されると、大文字と小文字を区別する照合データベースで実行されない可能性があります (ステートメントを実行しようとしたとき、またはストアド プロシージャを作成しようとしたとき、またはストアド プロシージャ アーキテクチャの場合、大量の動的 SQL がない限り、これらすべてを非常に迅速に検出できます)。

コードを実行しても、データベースとは異なる照合順序で個々の列を設定できるため、異なる照合順序を使用すると、コードが予期しない動作をする可能性が常にあることに注意してください (たとえば、GROUP BY の動作が異なります)。

于 2009-01-30T20:34:49.933 に答える
0

オブジェクトごとに照合を設定し、データベースとサーバーのデフォルトも設定できます。

それに対処する方法は?ここで標準を適用する必要があります。さまざまな人がさまざまなケースで書いていることに簡単に巻き込まれる可能性があります。

照合はデータにも適用されるため、"bob" != "Bob"

于 2009-01-30T18:36:48.363 に答える