【記載理由】
オンプレミス環境とAzure環境のSQLServerManagementStudioで扱うデータを bcpコマンド(csvファイルを出力するコマンド)でデータを吐き出す際に 日本語文字列のカラム(項目)でデータが同じ順番に並ばず出力され、 データの一致が確認できない事例が私のタスクの中で起きました。 その解決策を共有したいと思います。●BCPコマンドの参考リンク
参考:https://docs.microsoft.com/ja-jp/sql/tools/bcp-utility?view=sql-server-ver15
【問題点】
今回タスクとして使用した環境はオンプレミスとAzureの2環境。 環境構築を統一して行っていなかった為、以下のような差異があります。SQLServerManagementStudioのデータベースのプロパティ
●照合順序
・オンプレミス環境の照合順序が「Japanese_CI_AS」
・Azure環境の照合順序が「SQL_Latin1_General_CP1_CI_AS」
と設定されていました。
現在のプロジェクトの状況から初期段階で設定した照合順序を変更するのは、
影響範囲等を考えたりする為、工数がかかると判断が下り、
照合順序の設定を変更することができませんでした。
照合順序の設定変更が不可能。では、どうしましょう?
そこで使用したのが、
「COLLATE Japanese_CI_AS」
公式としては
COLLATE [照合順序を設定するキーワード]
COLLATEの使用可能な箇所は
where句、SELECT句の列ごと等に指定することが可能です。
指定するとその指定したものに対しての照合順序がCOLLATEで
設定した順序になります。