既存のAzure SQL データベースの照合を変更する


解説

この記事では、既存のAzure SQL データベースの照合を変更する方法について説明します。

たとえば、Azure App ServiceにデプロイされたSitecore XP インスタンスをアップグレードする場合は、xDB Reference Data databaseをアップグレードする前に、その照合をSQL_Latin1_General_CP1_CI_ASからLatin1_General_CS_ASに変更する必要があります。

注:単純なスクリプトの実行でAzure SQL データベースの照合を変更することはできません。

解決策

既存のAzure SQL データベースの照合を変更するには、Microsoftにより提供されている、以下の方法の実施を検討してください。
  1. Azure SQL データベースをデータ層アプリケーション(BACPAC)ファイルにエクスポートするには:
    • Azure SQL インスタンスに接続し、Azure SQL データベースを右クリックして、「Tasks」、「Export Data-tier application」の順にクリックします。


    • ウィザードを実行し、BACPAC ファイルのターゲット パスと名前を選択して、ウィザードを完了させます。
      Azure SQL データベースをBACPAC ファイルに正常にエクスポート完了した後、次にBACPAC ファイル内のmodel.xmlを変更する必要があります。

  2. BACPAC ファイル内のmodel.xmlを変更するには:
    • /ModelFilePathパラメータをサポートする最新バージョンのSqlPackage.exe ユーティリティを使用して、BACPAC ファイルをオーバーライドしてインポートできます。このリンク先から最新のSqlPackage.exe バージョンをダウンロードしてインストールします。
    • Sqlpackage ユーティリティが、C:\Program Files\Microsoft SQL Server\150\DAC\bin ディレクトリにインストールされます。
    • winzipまたは7-zipを使用して.bacpac ファイルを開きます。
    • model.xmlをローカル フォルダーC:\Temp\model.xmlにコピーします。
    • 次のように「C:\Temp\model.xml」を「Latin1_General_CS_A collation」に編集し、変更を保存します。
      From <Property Name="Collation" Value="SQL_Latin1_General_CP1_CI_AS" />
      To <Property Name="Collation" Value="Latin1_General_CS_AS" />
  3. オーバーライドされたmodel.xmlを使用してBACPACをAzure SQLにデプロイするには:
    • sqlpackage.exe」を使用してインポートを実行しますが、「/ModelFilePath:C:\Temp\model.xml」パラメータを使用して.bacpacのmodel.xmlをオーバーライドします。また、ターゲット データベース名を既存のデータベースの名前とは異なるものにします。
      例:
      sqlpackage.exe /Action:Import /tsn:<Your DB Server Name>.database.windows.net /tdn:<Target DB Name> /tu:<SQL Admin User Name> /tp:<SQL Admin Password> /sf:"<Path to your BACPAC file>" /ModelFilePath: C:\Temp\model.xml
      注:デプロイ中に、コンソールに次のメッセージが表示される場合があります:
      *** Overriding model.xml using file 'C:\Temp\model.xml'.  Use of this setting may result in deployment failure and/or unintended data loss.  This setting is intended only for use when troubleshooting issues with publish, import or script generation.
      これは、モデルをオーバーライドしてデプロイする場合に通常表示される警告であり、カスタマイズで問題が発生したことを意味するものではありません。

      Successfully imported database」というメッセージが表示された後、古い照合を使用している古いデータベースを削除し、新しいデータベースの名前を最初のデータベース名に変更できます。これで、正しい照合を行うデータベースが1つだけになりました。