照合順序 – 文字の比較と並び順 (その 2)

神谷 雅紀Escalation Engineer   照合順序 – 文字の比較と並び順 (その 1) では照合順序とは何かを書きました。今回は、照合順序に関わるいくつかの注意点について書きます。     照合順序の衝突   異なる照合順序が指定されている列同士は、比較することができません。 以下は、その簡単なサンプルです。   use mastergodrop database ja_90_bin2go— 照合順序 japanese_90_bin2 のデータベースを作成create database ja_90_bin2 collate japanese_90_bin2gouse ja_90_bin2go— 照合順序 japanese_90_bin2 のデータベースに japanese_90_ci_as と japanese_90_cs_as の列を持つテーブルを作成create table dbo.ja_90_cias (c1 int, c2 nvarchar(10) collate japanese_90_ci_as)create table dbo.ja_90_csas (c1 int, c2 nvarchar(10) collate japanese_90_cs_as)go— japanese_90_ci_as と japanese_90_cs_as…

0

照合順序 – 文字の比較と並び順 (その 1)

神谷 雅紀Escalation Engineer 照合順序が分かりにくいという意見がありましたので、今回は照合順序を取り上げます。        照合順序とは何か SQL Server では、文字の大小関係を比較する場合の基準を照合順序 (collation) と呼んでいます。例えば、「朝」と「海」ではどちらが大きいのか、「あ」「ア」「ア」を大きい順に並べた場合どのように並ぶのかといった、文字の大小関係を決めているのが照合順序です。 言語としての日本語の観点では、「朝」と「海」のどちらが大きくても、さほど問題にはならないように思えるかもしれません。しかし、もしこれらの文字に大小関係がなかったら、データを大きい順に並べても毎回違った並び順になる可能性があります。さらに、もしこれらの文字に大小関係がなかったら、大きくも小さくもないということになります。大きくも小さくもないということは、   if (a < b) …else if (a > b) …else …   の式で最後の else に入るということであり、そこに入るのは a = b の場合だけです。つまり、等しいということです。「朝」と「海」が等しいとなると、それは言語としての日本語でも問題となってきます。 このように、照合順序 (文字の大小関係) は、データを扱う処理にとっては、重要な要素です。 照合順序はどのような場面で使われるのか 文字の比較を行うすべての場面で使われます。 例えば、インデックスを作成する際には、キー列の値順にインデックス行を並び替えるために使われます。select … from … order by Col1 のようなクエリでデータを並び替える際にも使われます。select … from … group by Col1 のようなクエリでグルーピングを行う際にも使われます。また、if (@a = @b)…

1

[SQL Database] ”削除されたデータベース” の一覧に削除されたデータベースが存在しない

山崎 実久 SQL Server Developer/Microsoft Azure SQL Database Support 新しい Microsoft Azure Portal (https://portal.azure.com/) で利用可能な、”削除されたデータベース” に関する機能についての説明です。 ”削除されたデータベース” の一覧には、復元可能な削除されたデータベースの一覧が表示されます(図1)。 しかし、データベースを作成してから 10 分以内にデータベースを削除した場合、”削除されたデータベース” の一覧に削除されたデータベースが表示されない場合があります。 理由は、データベースが作成されてからバックアップファイルを生成し、データベースが復元可能になるまで 10 分程度時間を要するためです。 図1、 ”削除されたデータベース” に復元可能な削除されたデータベース testdb01 が表示されていることがわかります。   ※ 本ブログの内容は、2016年1月時点の情報です。

0

V12 の Azure SQL Database の sys.event_log に reconfiguration が記録されない (Document Version 1.0)

Note : 本トピックの扱いについて 本トピックは 2015/8/24 現在の最新情報であり、今後についてはアップデートを随時実施してまいります。速報としてのご案内となりますため、今後の内容が変更される場合があります。 Azure SQL Database のビュー sys.event_log は、データベースの再構成 (Reconfiguration) に関するログが出力されておりました。 しかし、アップデート後のAzure SQL Database v12 では、その結果が返されないというお問い合わせが多く寄せられております。 現時点(20/15/8/24)では、アップデート後の Azure SQL Database v12では データベースの再構成 (Reconfiguration) の発生状況を sys.event_log から、確認することが出来ません。米国開発部門とこの現象について協議した結果、以前のバージョンの Azure SQL Database と同様に Azure SQL Database v12においても sys.event_log から データベースの再構成 (Reconfiguration)の発生状況を 確認出来るよう、機能改善することの検討が進められています。 sys.event_log (SQL データベース) http://msdn.microsoft.com/ja-jp/jp-ja/library/dn270018.aspx [代替案] エラー 40613 がクライアントに返された場合、Reconfiguration である可能性が高いといえます。 SQL Azure Connection Management…

0

[SQL Database] 新バージョン(V12) へのアップグレード用 PowerShell コマンドレット

  SQL Server/Microsoft Azure SQL Database サポート 福原 宗稚 Microsoft Azure SQL Database では、Basic/Standard/Premium エディションの環境で、新バージョン V12 へのアップグレードが可能になっています。これまでもポータル画面から、手動でアップグレードや、アップグレードの状態確認ができましたが、新しい Windows Azure PowerShell によって、PowerShell コマンドレットからも実施可能になりました。また、PowerShell コマンドレットでは、ポータル画面からできないアップグレードのキャンセルも可能という利点があります。   Start-AzureSqlServerUpgrade : 新バージョン V12 へのアップグレードを実行します。アップグレードは、バックグラウンドで行われるため、アップグレードを開始した後もデータベースはオンラインのまま使用可能です。 Get-AzureSqlServerUpgrade : 実行中のアップグレードの状態を確認します。 Stop-AzureSqlServerUpgrade : 実行中のアップグレードをキャンセルします。上記の通りアップグレード開始後もデータベースは使用可能ですが、万が一何か予期しない問題が発生した場合や、誤ってアップグレードを開始してしまったので改めて後日やり直したいといった場合に使えます。   手順 1.  Microsoft Web Platform Installer から、最新の Windows Azure PowerShell をインストールします。 ※すでに Azure PowerShell のバージョンが、2015年5月リリースの 0.9.1 以上であれば、新たに Windows Azure…

0

[SQL Database] Web および Business エディションの終了に伴う、新エディションへの移行について (Microsoft Azure SQL Database)

  皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチーム です。 既にご存知の方も多いかと思いますが、Microsoft Azure SQL Database (以下 MASD) の 旧エディション (Web および Business) が、2015年9月以降、利用できなくなります。 本サービスの終了に伴い、現在 旧エディション (Web および Business) をご利用のお客様は、新エディションへの移行 (アップグレード) が必要となります。 そのため、本サービスが終了するまでに、計画的に新エディションへの移行 (アップグレード) をお願いします。 尚、新エディション (Basic/Standard/Premium) への移行 (アップグレード) は、Windows Azure 管理ポータル から オンライン処理 で実施することが可能です。※ 新エディションへの移行中も、お客様データベースへのアクセス (SELECT/UPDATE/DELETE/INSERT) が可能です。   [新エディションへの移行手順] 1) Windows Azure 管理ポータルにログインします。 2) 移行対象 (アップグレード対象) のデータベースを選択します。…

0

SQL Database から Microsoft Azure 仮想マシン + SQL Server 環境 へのデータ移行方法について

  皆さん、こんにちは。SQL Server/Microsoft Azure SQL Database サポートチームです。今回のテーマは SQL Database から IaaS 環境へのデータ移行方法についてです。 Microsoft Azure SQL Database (以下 MASD) /Microsoft Azure 仮想マシン + SQL Server  (以下 SQL VM) をご利用いただいているお客様からよく頂くご質問の一つに、MASD から SQL VM へのデータ移行方法に関するものがあります。 当初は、MASD の使用した開発を検討していたが、SQL Server のフル機能を使用したいなど、開発途中で要件変更が発生し、別の環境にデータ移行を行う必要が出てくる可能性があると思います。 今回は、このような状況で役立つ、MASD から SQL VM へのデータ移行方法をご紹介します。   [前提条件] データ移行先の Microsoft Azure 仮想マシンに SQL Server がインストールされていることを前提にしています。   [事前準備] 1) Microsoft Azure…

0

日本語照合順序での 濁音、半濁音 の取り扱いについて

  皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチーム です。 今回は、日本語照合順序での 濁音、半濁音 の特殊な取り扱いについて紹介します。   [濁音、半濁音 の 特殊な取り扱い] 濁音、半濁音 の文字コードは以下のものになります。   濁音、半濁音 SJIS UTF-16 ゛ (全角) 0x814A 0x309B ゜ (全角) 0x814B 0x309C ゙ (半角) 0xDE 0xFF9E ゚ (半角) 0xDF 0xFF9F   SQL Server で 日本語照合順序を使用している場合、半角文字の後に濁音、半濁音を追加すると、”半角文字” + “濁音、半濁音” が 1 文字として認識されます。 具体的に LIKE 検索を実行し、動作を見てみましょう。   SELECT CASE WHEN…

0

日本語照合順序での漢数字 〇 (0x815A) の取り扱いについて

  皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチーム です。 今回は、日本語照合順序での 漢数字 〇 の特殊な取り扱いについて紹介します。   [漢数字 〇 特殊な取り扱い] 漢数字 〇 の文字コードは以下のものになります。 SJIS UTF-16 漢数字 〇 0x815A 0x3007   SQL Server で 日本語照合順序を使用している場合、一部の日本語照合順序 (Japanese、Japanese_90、Japanese_Unicode) では、ソートの重み付けを持つ文字として 漢数字 〇 が登録されていないため、漢数字 〇 を含む文字列で LIKE 検索した場合に、意図しない検索結果が返る場合があります。 具体的に LIKE 検索を実行し、動作を見てみましょう。   SELECT CASE WHEN ‘12‘ LIKE ‘1〇2‘  THEN ‘TRUE’ ELSE ‘FALSE’ END…

0

日本語照合順序での長音、繰り返し符号の取り扱いについて

  皆さん、こんにちは。 SQL Server/Microsoft Azure SQL Database サポートチーム です。 今回は、日本語照合順序 (Japanese、Japanese_90、Japanese_XJIS_100、Japanese_Unicode) での、長音、繰り返し符号の特殊な取り扱いについて紹介します。   [長音、繰り返し符号の特殊な取り扱い] 長音、繰り返し符号には、以下のものが存在します。   長音符号 SJIS UTF-16 ー 0x815B 0x30FC ― 0x815C 0x2015 ー 0xB0 0xFF70   繰り返し符号 SJIS UTF-16 ヽ 0x8152 0x30FD ヾ 0x8153 0x30FE ゝ 0x8154 0x309D ゞ 0x8155 0x309E 々 0x8158 0x3005   SQL Server で 日本語照合順序を使用している場合、長音、繰り返し符号は、特殊な文字として、全て等価の符号として取り扱われます。そのため、長音、繰り返し符号で検索を実施した場合には、全ての 長音、繰り返し符号が同じ符合(文字)として認識されるようになります。   具体的に…

0