2009-08-04 9 views
0

データベースアプリケーションが数ヶ月間実行されていて、突然エラーが発生しました。ドイツの地域設定のあるSQLサーバー

私は値0,05と比較されていたdatetime浮動小数点計算例外に気付きました。私はまた、XMLログファイルに書き込まれる日付がd.mm.yyの形式であることに気付きました。

明らかに、10進演算子は '、'で、日付区切り文字は '。'です。

アプリケーションは、最初に英国の地域設定を使用してインストールされました。私はまだ英国の英語だった地域の設定を確認しました。

データベース接続文字列に気づきましたが、ホストは "servername \ instance、portNumber"として指定されていました。通常の作業インストールでは "servername \ instance:portNumber"が必要です。

地域の設定はどこから得られますか?また、データベースまたはデータベースを実行するユーザーに対してアプリケーションを実行するために使用しているのはユーザーですか?

JD。

答えて

3

コントロールパネル..地域設定。

これは、SQL Serverではなく、クライアントアプリケーションの問題のように聞こえます。それらが同じボックスにインストールされている場合、SQL ServerはOSロケールから設定を取得しません。

それは

SQL Serverはまた、認識することはありませんアプリのユーザーはドイツ語のロケールを持っており、それが(クライアントはロケールの扱いをしていると)、すでにフロートまたは日時であるべき時に一部のデータは、文字列として渡されていることが考えられ"0,05" auf Deutschもあります。

SET LANGUAGE GERMAN 

DECLARE @val float 
SET @val = 0,05 --fail 
GO 
DECLARE @dt datetime 
SET @dt = '23 Mrz 2009' --fail 
GO 
DECLARE @dt datetime 
SET @dt = '23.03.2009' --ok 
GO 

"servername \ instance、portNumber"はSQL Serverに適しています。

+0

SQLサーバーとアプリケーションは同じボックスにあります。地域の設定を確認したところ、イギリス(英語)の設定になっていました。他にどこを見るかわからない現在の設定では、SQL Serverは1つのユーザーアカウントで実行され、別のユーザーアカウントで実行されるように見えます。 –

+0

@JD:1.私は、アプリケーションがネイティブデータ型ではなくSQL Serverに文字列を渡していると思います。そのような場合は、あなたのために、またはデフォルトのために言われているにもかかわらず、アプリのユーザーが英語でなければならないようにする必要があります。プレゼンテーション/キャプチャとSQL呼び出しを分けているので、私たちは別のロケールを管理しています。ドイツのユーザーが "0,05"を入力しても、常に "0.05"をサーバーに送ります。 – gbn

+0

@gbn:クライアントを実行しているユーザーのロケールアプリ、それは英国(英語)です。ここからどこに行くのか分かりません。私が知っていることは何ヶ月も働いていたことを知っていて、その後、私たちはこれらのエラーを出すようになった(ログファイルに書き込む前に、日付はログ日時の区切り文字として "。" –

関連する問題