Project Server 2013: SQL で英語以外の言語を使用している場合のアップグレードに関する問題


(この記事は 2016 年 6 月 14 日に Project Support Blog に投稿された記事 Project Server 2013: Problems upgrading if your SQL language is not English の翻訳です。最新情報については、翻訳元の記事をご参照ください。)

Project Server 2010 から Project Server 2013 への移行に使用する PowerShell のアップグレード スクリプトの不具合対応について、Diana Balan に感謝します。これらの問題については修正要求が寄せられていますが (次回リリースまでの修正を目指します)、今回の記事ではその回避策について説明します。この問題は ConvertTo-SPProjectDatabase コマンドを実行したときに発生するもので、次のようなメッセージが表示されてからしばらくしてエラーが発生します。

ConvertTo-SPProjectDatabase : Action 15.0.10.0 of Microsoft.Office.Project.Server.Upgrade.ReportingDatabaseSequence failed.
At line:1 char:1
+ ConvertTo-SPProjectDatabase -WebApplication http://<servername> -Dbserver bris …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (Microsoft.Offic…baseImplementor:ConvertToProjec…baseImplementor) [ConvertTo-SPProjectDatabase], SPU
pgradeException
+ FullyQualifiedErrorId : Microsoft.Office.Project.Server.Cmdlet.PSCmdletConvertToProjectServiceDatabase

この問題は、PowerShell コマンドを実行しているユーザーが SQL で使用する言語を SQL Management Studio の下図のダイアログで設定すると (または SQL 内で設定していると) 発生します。

SSMS_De

エラーを再現するために、ここでは言語をドイツ語に設定します。この設定により、ULS ログもドイツ語になります。エラー メッセージは次の文から始まります。

System.Data.SqlClient.SqlException (0x80131904): Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

私のドイツ語は学生レベルですが、それでも時間/日付の形式に問題があるということはわかります。実際、ドイツ語などの言語を使用すると ISO の日付形式が設定されるので、このとき日付と同時に時間も設定する必要があります。プロファイラー トレースを実行すると WHILE @CurrentTimeByDay <= ‘2149-12-31′ というステートメントが表示され、エラーが発生します。

回避策: 言語を英語に設定すると、このコマンドを実行してもエラーは発生しません。

検索エンジンを使用する場合に向けて、ULS ログに記録されるステートメントを言語別に示します (順不同)。

  • ドイツ語 – Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.
  • フランス語 – La conversion d’un type de données varchar en type de données datetime a créé une valeur hors limites.
  • スペイン語 – La conversión del tipo de datos varchar en datetime produjo un valor fuera de intervalo.
  • ポルトガル語 – A conversão de um tipo de dados varchar num tipo de dados datetime resultou num valor fora do âmbito.
  • ロシア語 – Преобразование типа данных varchar в тип данных datetime привело к выходу значения за пределы диапазона.
  • イタリア語 – La conversione di un tipo di dati varchar in datetime ha generato un valore non compreso nell’intervallo dei valori consentiti.
  • デンマーク語 – Konverteringen af en varchar-datatype til en datetime-datatype resulterede i en værdi, der ligger uden for intervallet.
  • オランダ語 – De conversie van varchar-gegevenstype naar een datetime-gegevenstype heeft geresulteerd in een waarde buiten het bereik.
  • ギリシャ語 – Η μετατροπή ενός τύπου δεδομένων varchar σε τύπο δεδομένων datetime είχε ως αποτέλεσμα μια τιμή εκτός περιοχής.
  • ポーランド語 – Konwersja typu danych varchar na typ danych datetime spowodowała utworzenie wartości leżącej poza zakresem.
  • フィンランド語 – Tietotyypin varchar muuntaminen tietotyypiksi datetime antoi tulokseksi arvon, joka ei ole alueella.
  • チェコ語 – Převod datového typu varchar na datový typ datetime vrátil hodnotu mimo rozsah.
  • トルコ語 – varchar veri türünden bir datetime veri türüne dönüştürme aralık dışı bir değerle sonuçlandı.
  • ノルウェー語やアラビア語などの一部の言語では、エラーが発生してもエラー メッセージは英語で表示されます (サーバーの構成により異なる可能性があります)。varchar データ型から datetime データ型へのメッセージは、範囲外の値を取ります。
  • スウェーデン語、日本語、韓国語、中国語、ハンガリー語では正常に動作します。

ここでは Project でサポートされている言語のみを示しました。Project でサポートされていない言語で SQL を使用した場合のメッセージについては取り上げていません。

 

※ 本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。

Skip to main content