この記事では、Azure SQL Databaseの照合順序の構成と、bacpacファイルからデータベースをインポートするときにその構成を変更する方法について説明します。
はじめに
照合順序は、サーバー、データベース、または列レベルでの文字データセットのデータベースエンジンの動作を決定する構成を指します。 SQL Serverには、世界のさまざまな地域の言語の違いを処理するための幅広い照合順序があります。 ソートルール、Unicodeデータ型(nchar、nvarchar、またはntext)および非Unicode(char、varchar、nvarchar)の大文字と小文字の区別を提供します。
SQL Serverでは、次の照合順序がサポートされています。
- Windows
- Binary:バイナリ照合順序は常に_BINまたは_BIN2
- SQL Server:これらの照合順序名は常にSQL_
で始まります。 ただし、SQL Serverのインストール中またはOSロケールの変更中に、サーバーレベルの照合順序を変更できます。 既定のSQL Server照合順序はSql_Latin1_General_Cp1_Ci_Asです。 照合順序とUnicodeサポートを参照することで、これらの照合順序を詳細に理解できます。
要件
この記事では、Azure SQLデータベースの基本的な理解があることを前提としています。 初心者の場合は、SQLShackの既存の記事SQL Azureを参照することができます。 URLhttps://azure.microsoft.com/en-us/free/
Azure SQL Database Collation
Azure SQL DBは、特定のタスクを実行するための一定の制限と制限があるsql Server用のマネージドPaaSオファリングです。 オンプレミスのSQL Serverと同様に、Azure DBもさまざまな照合順序をサポートします。 Azure SQL DBでサポートされている照合順序のリストを取得するには、sysを照会します。fn_helpcollations()関数。 5,508個の照合順序のリストを返します。 次の図は、照合順序と説明を垣間見ることができます。
Azure SQL DBの場合、SQLデータベースの作成の追加設定タブでデータベースの照合順序を選択できます。 以下に示すように、デフォルトの照合順序はSql_Latin1_General_Cp1_Ci_Asとして表示されます。
私たちはそれを理解するためにこの照合を分解することができます。
- SQL-それはSQL Serverの照合順序であることを指します
- Latin1_General-この部分は文字ソートルールを定義します
- CI–大文字と小文字を区別しない
- AS-アクセント
照合順序の検索をクリックして、Azure DB用に構成する特定の照合順序を探すことができます。
既存のAzure論理サーバーにAzureデータベースをデプロイできます。 したがって、SSMSを使用して新しいAzureデータベースを作成する場合は、[オプション]ページを使用して特定の照合順序を定義できます。T-SQLを使用してAzure SQL DBを作成する場合は、COLLATEキーワードを使用して、必要なDB照合を指定できます。
1
2
3
|
データベースを作成するMyDemoSQLDB
Latin1_General_100_Cs_As_Scを照合します;
|
正しい照合順序でデータベースを作成する必要があります。 照合順序の不一致が原因で、SQLクエリが正しく動作しない場合があります。 ただし、Azure SQLデータベースを作成した後に変更する必要がある場合は、簡単ではありません。 Azure SQL DBでは、ALTER DATABASE COLLATEを使用した照合順序の変更はサポートされていません。 変更しようとすると、次のエラーメッセージが表示されます。
1
2
3
4
|
マスター
go
ALTER DATABASE Azuredemodatabase
COLLATE Sql_Latin1_General_Cp1250_Ci_Asを使用します
|
- 注:特定の要件が満たされるまで、特定の照合順序を変更または設定しないでください。 本番データベース上で直接行うことはありません。 下位のDB環境で徹底的にテストし、本番照合
オンプレミスのBACPACファイルからAzure SQLデータベースを展開するとします。 ターゲットデータベースに別の照合順序を指定する必要があります。注:アクティブなAzure SQL DBがあると想定しています。 そうでない場合は、テストデータベースを展開するために無料利用枠アカウントを使用できます
この記事のデモでは、次のタスクを実行します:
- Azure SQLデータベースをBACPAC形式でエクスポートします
- Microsoft SQL Server Data-Tier Application Framework(18.1)をインストールします
- モデルを変更します。xmlファイル構成
- sqlpackageを使用します。exe更新された照合順序でAzureデータベースをデプロイする
- データベースの照合順序を確認する
ステップ1:Bacpac形式でAzure SQLデータベースをエクスポートする
このステップでは、Azure SQL DBをBACPAC形式でエクスポートします。 既存の照合順序がSql_Latin1_General_Cp1_Ci_Asであることを確認できます。
エクスポートするには、Azureデータベースを右クリックし、データ層アプリケーションのエクスポートを選択します…
ローカルディスクに保存するディレクトリを指定します。
bacpac形式のデータ層アプリケーションの進捗状況を確認、エクスポート、および監視します。
ステップ2: MICROSOFT SQL Server Data-Tier Application Framework(18.1)のダウンロード
SSDTの最新バージョンをダウンロードしてインストールする必要があります。 URLhttps://www.microsoft.com/en-us/download/details.aspx?id=57784に移動し、[ダウンロード]をクリックします。
必要なMSIファイルのバージョンを選択してダウンロードします。 これは軽量のパッケージファイルです。
を選択し、インストールウィザードに従ってMicrosoft SQL Serverデータ層アプリケーションフレームワークを設定します。
ステップ3:名前を変更します。 BACPACファイルへ。ZIP
この手順では、エクスポートされたBACPACパッケージファイルの名前をZIP形式に変更します。 これを行うには、インポートされたBACPACを右クリックし、拡張子をZIPに変更します。 ファイルの種類は、次の図に示すように、拡張子を変更した後に圧縮(zip形式)されます。
圧縮されたファイルを右クリックして解凍してください。 抽出されたフォルダには、モデルがあります。xml、モデルをコピーします。のような別のディレクトリへのxml C:\Temp フォルダ。
モデルを開きます。からのxml C:\Temp\Model…..xmlとDB照合順序を変更します。 次の図は、Azure SQL Databaseの古い照合順序と新しい照合順序を示しています。 ここでは、大文字と小文字を区別してSQL照合を使用します。
ステップ4:sqlpackageを使用してAzureデータベースをデプロイします。exe
ここで、ディレクトリに移動しますC:\Program コマンドプロンプトでFiles\Microsoft SQL Server\150\DAC\bin。 Sqlpackageを使用します。/ModelFilePathパラメーターを指定してBACPACをインポートするexe。 このパラメータでは、BACPACモデルファイルの設定が特定のファイルで上書きされます。
必要なパラメータ:
- /tsn:このBACPACファイルをインポートするAzure SQL Server FQDNを指定します。 私の場合、それはazuredemosqldemo.database.windows.net
- /tdn:これは新しいAzure SQLデータベース名です。 既存のデータベース
- /tuにBACPACをインポートすることはできません:Azure SQL Serverに接続してデータベースを展開する管理者ユーザー名を指定します
- /tp: 管理ユーザーのパスワードを入力します。
- /sf:BACPACファイルの場所を指定します。
- /ModelFilePath:更新されたモデルを入力します。XMLファイルパス
以前は、BACPACファイルの拡張子をZIPに変更しました。 Sqlpackageを実行するには、bacpacに戻す必要があります。exeコマンド。
BACPACの照合順序を変更するには、コマンドプロンプトで次のコマンドを実行します。
exe/アクション:インポート/tsn:azuredemosqldemo.database.windows.net /tdn:azuredemodatabasenew/tu:sqladmin/tp:*******/sf:C:\Temp\azuredemodatabase.BACPAC/ModelFilePath:C:\Temp\model.xml
警告メッセージが表示されます。
“モデルをオーバーライドします。ファイルを使用したxml’C:\Temp\model…..xml”です。 この設定を使用すると、展開の失敗や意図しないデータの損失が発生する可能性があります。 この設定は、パブリッシュ、インポート、またはスクリプト生成に関する問題のトラブルシューティング時にのみ使用します”
データのインポートを開始し、テー データベースのデプロイ時間は、テーブルの数、データサイズ、インデックスによって異なります。
最後に、メッセージが表示されます–正常にインポートされたデータベース。
ステップ5:検証
次に、SSMSを使用してAzure Databaseに接続し、次のスクリプトを使用してデータベースの照合順序を確認します。
1
|
SELECT CONVERT(varchar(256),DATABASEPROPERTYEX(‘azuredemodatabasenew’,’collation’));
|
以下に示すように、新しく配置されたデータベースでは、照合順序Sql_Latin1_General_Cp1_Cs_Asが使用されます。
ここで、Azureポータルにログインし、データベースのプロパティを表示します。 このデータベースには、汎用のGen5、2vcoresの価格層があります。 データベースのデプロイ時には、価格層を指定しませんでした。 したがって、Azure SQLデータベースは既定の価格レベルを使用します。
ステップ6: Azure databaseを特定の価格層にデプロイする
照合順序が変更され、基本価格層が変更されたデータベースをデプロイするとします。 このデモでは、DB照合順序をLatin1_General_Binに変更します。 したがって、モデルを開きます。前に強調表示されているようにxmlと照合を変更します。
今回は、データベース版を設定するための新しいパラメータ(/p)を指定します。 Azureに、特定の価格レベルでデータベースを展開するように指示します。
exe/アクション:インポート/tsn:azuredemosqldemo.データベース。windows.net /tdn:azuredemodatabasenew/tu:sqladmin/tp:*******/p:DatabaseEdition=Basic/sf:C:\Temp\azuredemodatabase.BACPAC/ModelFilePath:C:\Temp\model.xml
DBがデプロイされたら、データベースの照合順序を確認します。 以下に示すように、Latin1_General_Bin照合を使用します。
Azureポータルに接続し、価格レベルを基本として確認できます。
- メモ: 特定の要件なしにDB照合順序を変更しないでください。 任意に変更すると問題が発生する可能性があります
結論
この記事では、デフォルトのAzure SQL Database照合順序と、BACPACファイルからDBをインポートする際に変更するプロセスについて説明しました。 目的の照合順序を指定し、データベースを配置できます。 ただし、特定の要件がない限り、照合順序を変更しないでください。 この手順は、Azure SQL databaseの独自のテストで試すことができます。
- 著者
- 最近の投稿
彼は、単一のトピックに関する記事の最大の無料オンラインコレクションの一つの作成者であり、SQL Server Always On Availability Groupsに関する50部のシリーズを持っています。 SQL Serverコミュニティへの貢献に基づいて、彼はSQLShackで2020年と2021年に連続して権威ある「best author of the year」を含むさまざまな賞を受賞しています。
Rajは常に新しい挑戦に興味があるので、彼の文章でカバーされているテーマについて相談する必要がある場合は、rajendraで連絡することができます。[email protected]
Rajendra Guptaによるすべての投稿を表示する
- ARMテンプレートを使用してSql Server Linuxイメージを使用してAzureコンテナインスタンスをデプロイする-2021年12月21日
- AWS RDS SQL ServerとAmazon Rdsのリモートデスクトップア10, 2021