質問

私は、トルコの照合順序のいずれかに設定私たちのMSSQLデータベースに問題を抱えています。 「トルコ語I」問題のBecuase「i」はそれらに含む当社のクエリはいずれも正常に機能していません。我々はそのような場合には定義された列「UNITID」と「ユニット」と呼ばれるテーブルを持っている場合は、下ケース「i」が「ID」で定義された資本異なるため、例えば、クエリは、もはや作品「ユニットからUNITID選択していません」 "UNITID" でI。エラーメッセージが「無効な列名 『UNITID』を。」読んでいました。

私はトルコ語で、手紙は私と私は別の文字として見られているので、これが発生していることを知っています。しかし、私はこの問題を解決する方法に関してわかりませんか? DB内のすべての1900年のSPを通過し、「I」ののケースを修正するためのオプションではありません。

すべてのヘルプは、代わりにトルコのに使用することができるが、その文字セットをサポートするその他の照合のも、提案をいただければ幸いです。

役に立ちましたか?

解決

は、最善の解決策は、実際にリファクタリングするすべてのSQLとコードだったことが判明します。

最後の数日間で、私は一貫してすべてのストアドprocsの、関数、ビュー、テーブル名を修正し、正しいケースなどを使用するようにリファクタリングアプリを書いています:

select unitid from dbo.unit 

に変更されます。

select UnitId from dbo.Unit

アプリケーションはまた、コードを通過し、ストアドプロシージャとそのパラメータの任意の発生を置き換え、DBに定義されている場合に一致するようにそれらを修正します。アプリケーション内のすべてのDataTableが不変ロケールに(すべてのDataTableを指摘するためのFxCopのおかげで..)設定され、これは、大文字と小文字が区別であることを有するコード内からの呼び出しを防ぎます。

誰でもプロセス上のアプリやアドバイスをご希望の場合は、dotnetvixen@gmail.comに私に連絡することができます。

他のヒント

データベースは大文字と小文字が区別され、クエリではないので、

おそらく、私はここでの問題を理解していないが、これではない可能性が高いのですか?たとえば、Sybaseの上で私は、次の操作を行うことができます:

USE master
GO
EXEC sp_server_info 16
GO

私のデータベースが大文字と小文字を区別しないことを私に伝えます:

attribute_id   attribute_name     attribute_value 
          16   IDENTIFIER_CASE    MIXED

あなたは不変のロケールを試し、その後使用している照合順序を変更することができます。しかし、あなたは顧客の名前や住所などの他のものに影響を与えないことを確認してください。顧客が自分の名の大文字小文字を区別しない検索を持つことに慣れている場合、私ならば、彼らはそれを好きではないだろうと私は同等であることを停止、またはIとIは等価で停止した場合。

デフォルトへのデータベースの照合順序を変更できますか?A:これはトルコcolllationと、すべてのテキスト列を残します。

クエリは動作しますが、データが正常に動作します。理論的には...

varchar列を持つ一時テーブルとテーブル変数といくつかの落とし穴があります:あなたは、これらにCOLLATE句を追加する必要があります。

scroll top