照合順序 – 文字の比較と並び順 (その 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] 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

[Info] .NET Framework アプリケーションをリモート配置した場合に SQL Server への接続がタイムアウトすることがある

今回の記事では、SQL Server データアクセスを行うアプリケーションについて、その実体の配置場所によって処理の遅延が発生し、接続処理がタイムアウトしたという事例について紹介いたします。もし、身近に同様の事例や、経験をお持ちの方は、以下の内容がご参考になれば幸いです。   事例 : 「ファイル共有に配置したADO から ADO.NET アプリケーションに移行したら遅くなった」 ADO 経由で SQL Server に接続しデータアクセスを実行するアプリケーション(*.exe)を共有フォルダ上に配置し、クライアントには共有フォルダ上のアプリケーションのショートカットをダブルクリックしてアプリケーションを実行していたシステムを、.NET Framework で再構成し、ADO.NET 経由で SQL Server に接続するようにマイグレーションしたところ、SQL Server への接続が高確率でタイムアウトするようになった。 接続文字列で、”Connection Timeout” プロパティを 120 秒程に延長してみたが、状況は改善しなかった。処理の序盤ではタイムアウトせず、だんだんタイムアウトしていく確率が上がっていくような動きになっている。そこでアプリケーションをクライアント ローカルもしくは SQL Server と同じ環境に配置したところ、タイムアウトは一切発生しないことがわかった。 検証結果から、アプリケーションの配置場所がローカルか、リモートかという違いのみ、動作に影響しているようであるが、以前の ADO 経由のアプリケーションでは問題が発生しなかった。 発生例) Visual Basic 6.0 アプリケーションから Visual Basic (.NET Framework ベース) に移行した場合など   この事例での対処 この問題は障害ではなく、以下の二つの要因により接続処理のすべてのフェーズが接続タイムアウト期間中に完遂していない可能性が高いという判断に至りました。このため、この件ではアプリケーションの配置を各ローカルに変更することにより、問題を解消することができました。 1. 非同期で読み込まれていくアプリケーション実行関連のファイル(DLL、EXE、ini、config ファイルなど)のネットワーク伝送およびネットワーク伝送処理における IO のオーバーヘッド 2….

0

Windows Azure の仮想マシンで実行する SQL Server Reporting Services の構築手順

山崎 実久 SQL Developer Support Engineer Windows Azure に格納されたレポート定義言語 (RDL) レポートの実行と表示を提供するサービスである SQL レポートは、2014年10月31日にサービスの提供が中止されます。 SQL レポートを今までお使いのお客様は、Windows Azure の仮想マシン上で動作する SQL Server Reporting Services にレポートの移行をお願いいたします。 Windows Azure の仮想マシンの作成手順や、仮想マシン上での SQL Server Reporting Services (SSRS) の構築手順を下記構成でお伝えいたします。 ————————————— (A). Windows Azure の仮想マシンの作成 (B). 仮想マシン上での SQL Server Reporting Services の構築 (C). 仮想マシンへのエンドポイントの追 (D). 仮想マシンのファイアウォールのポートの解放 (E). Report Server のサイトへのアクセス可否の確認 ————————————— (A). Windows Azure…

0

[Windows XP] 暗号化された SQL Server Compact Edition データベースに対してアクセス遅延が発生することがある

.NET Framework 4.0 ベースのアプリケーションにおいて、暗号化された SQL Server Compact Edition データベースに対するデータアクセス処理を行った際、Windows XP 環境で処理が遅くなることがあります。 1. 問題発生要因 SQL Server Compact Edition プロバイダは、暗号化されたデータベースを参照する際に初回に CryptAcquireContext メソッドをコールします。暗号化されたデータの複合のためのキー コンテナーは、マシンコンテナに格納されているため(※)、下記フォルダ (以下 MachineKeys フォルダと呼称) を参照することになります。 C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys MachineKeys フォルダにアクセス出来ない場合、後処理ロジックに分岐しますが、この後続処理に時間を要し処理が遅くなります。従って、対処方法としてはアプリケーションを実行するユーザーに MachineKeys フォルダに対する参照権限を付与していただくことで、後続の処理ロジックを実行させないということになります。 2. 対処方法 事前に MachineKeys フォルダに対し、SQL Server Compact Edition を参照するユーザーに対してアクセス権限を付与します。これにより後続の処理ロジックを実行させないことにより遅延が抑止されます。なお、既に SQL Server Compact Database をインストールしている環境には、既に MachineKeys フォ ルダ以下にキーコンテナが存在します。他のアプリケーションが、SQL Server Compact Database を使用している場合などは、キーコンテナの権限を手動で編集し、他のアプリケーションに対しての影響がないか十分に評価を行っていただくことを推奨いたします。…

0

SQL Database にてスクリプトの生成が行えない

  山田 浩史 SQL Engine Support Engineer みなさん、こんにちは。今回は、Windows Azure SQL Database を使用していると直面しうるエラーについて紹介します。 現象:SQL Server Management Studio(SSMS) を使用して SQL Database 上のデータベースに対してスクリプト生成を行うとエラーで失敗する。 エラーレポートを確認すると以下のエラーが出力されている。 ——名前: ‘test_database’ からオブジェクトの一覧を取得しています。 結果: 失敗 メッセージ:     Microsoft.SqlServer.Management.Sdk.Sfc.EnumeratorException: この要求のデータを取得できませんでした。 —> Microsoft.SqlServer.Management.Sdk.Sfc.InvalidVersionEnumeratorException: バージョン 11.0 ではサポートされていない操作。 場所 Microsoft.SqlServer.Management.Smo.XmlReadDoc.LoadFile(Assembly a, String strFile) 場所 Microsoft.SqlServer.Management.Smo.SqlObject.LoadInitDataFromAssemblyInternal(Assembly assemblyObject, String file, ServerVersion ver, String alias, StringCollection requestedFields, Boolean store, StringCollection roAfterCreation, DatabaseEngineType databaseEngineType) 場所…

0

[*.rdlc] エクスポートした PDF の文字化け ~ 確認ポイントの鍵はシステム構成要素にあり ~

横井 羽衣子 SQL Developer Support Engineer みなさんごきげんよう。今日は、みんな大好きレポートの大敵「PDF の文字化け」についてです。 以前、弊社森が Reporting Services でエクスポートした PDF における文字化け問題について書いています。これは SQL Server Reporting Services 上のレポート、いわゆるサーバー レポート (*.rdl) についてのお話でしたが、この記事では、意外に気づかないローカル レポート (*.rdlc) について「Report Viewer コントロールは Version 10 ではフォント埋め込み対応してるけど、Version 9 では対応されていない」という件についてと、エクスポート時の文字化けの確認ポイントについて触れたいと思います。 ちなみに、Version 9 は、Visual Studio 2008 付属、Version 10 は Visual Studio 2010 に付属しています。 PDF で文字化けしてしまうときのフォントの扱われ方 まず、レポートをエクスポートするときの動きについておさらいしてみましょう。PDF にする際は、サーバーレポート、クライアント レポートともに、以下のような動きになります。 (1) レポートのエクスポート出力元は、そのマシン上の OS のフォント情報を使い、PDF ファイルをレンダリングします。その際、フォントが埋め込まれない場合、文字識別情報 (グリフ…

0

[SQL Connectivity] Case Study : クラスタ化された構成の SQL Server 2008 Service Pack 1 以前のバージョンの名前付きインスタンスに Windows Vista 以降から接続できない

横井 羽衣子 (よこい ういこ) SQL Developer Support Engineer – Data Access 皆様ごきげんよう。本日は、「クラスタ化された構成の SQL Server 2008 Service Pack 1 以前のバージョンの名前付きインスタンスに Windows Vista 以降から接続できない」という現象についてお知らせいたします。 【今日のお題】 名前付きインスタンスが動作しているクラスタ化された SQL Server の環境に対し、Windows XP からは正常に接続ができるのに、Windows Vista 以降では接続時に以下のエラーが発生してしまう。なお、SQL Server Browser サービスを用いて接続することを想定している。 SQL Server のバージョンは、2005 と、2008 サービス パックなしの環境でも同一の事象が発生する。 接続できませんでした。 SQLState: ‘01000’ SQL Serverエラー: 11004 [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]ConnectionOpen(Connect()) 接続できませんでした。 SQLState: ‘08001’ SQL…

0

Microsoft SQL Server JDBC Driver は Android OS をサポートしない

横井 羽衣子(よこい ういこ) SQL Developer Support Engineer 皆様ごきげんよう。今日は、Microsoft SQL Server JDBC ドライバは Android OS で動くか?という点についてお送りします。 【今日のお題】 Microsoft SQL Server JDBC ドライバを使って SQL Azure とかにつなぎたいの!出来る?出来ない? 端的に申しますと、残念ながら弊社 JDBC ドライバは Android OS 上では事実上使うことが出来ません。 また、製品として使用されることも想定されていません。将来的にサポートされる予定も現時点ではありません。(2012/10 月現在) Microsoft JDBC Driver 4.0 for SQL Server http://www.microsoft.com/ja-jp/download/details.aspx?id=11774 サポートされているオペレーティングシステムは、上記リンクにてご確認いただけますが、下記の通り Android OS は含まれておりません。 システム要件 サポートされているオペレーティング システム: Linux, Unix, Windows 7, Windows Server 2008 R2,…

0