松本美穂ブログ(SQL Server 中心ノート) このページをアンテナに追加 RSSフィード

2010-01-20

SQL Azure Database の照合順序について

自習書にも書いたのですが、SQL Azure Database の照合順序は、「SQL_Latin_General_CP1_CI_AS」です。

char や varchar データ型へ日本語(ダブル バイト)文字を正しく格納するには、次のように列の照合順序を設定します。

CREATE TABLE テーブル名
(  列名 データ型  PRIMARY KEY
  ,列名 varchar(100) COLLATE Japanese_CI_AS
  ,列名 …)

ただし、変数には照合順序を指定することができないので、次のように変数のデータ型を Unicode 対応の nchar や nvarchar へ変更する必要があります。

DECLARE 変数名 nvarchar(50) = N'検索文字'
SELECT * FROM テーブル名 WHERE 列名 = 変数

ただ、この場合は、内部的に列データの CONVERT_IMPLICIT(暗黙の型変換)が発生し、パフォーマンスに影響を及ぼします。これを回避するには、テーブルの列定義(データ型)を Unicode 対応の nchar や nvarchar へ変更するようにします。

CREATE TABLE テーブル名
(  列名 データ型  PRIMARY KEY
  ,列名 nvarchar(50) COLLATE Japanese_CI_AS
  ,列名 …)

ただし、nchar や nvarchar は、char や varchar データ型よりもデータの格納効率が悪いことに注意しましょう。

2010-01-17

SQL Azure Database のテーブルにはクラスタ化インデックスが必須

SQL Azure Database のテーブルにデータを追加するには、クラスタインデックスが必要です。

さもないと、データ追加時に次のようなエラーが出て、追加することができません。

f:id:miho_matsumoto:20100117072950j:image


主キーを設定すれば、自動的にクラスタインデックスが追加されます。


主キーを設定せずにクラスタインデックスのみを作成する場合は、次のように行います。

CREATE CLUSTERED INDEX インデックス名 ON テーブル名(列名)

こういった操作は、SQL Server と全く同じですね。

SQL Server 2008 R2 Management Studio から SQL Azure へ接続するには

SQL Server 2008 R2 Management Studio から SQL Azure へ接続するには、通常の SQL Server への接続と同様に、[データベース エンジンへの接続]ダイアログで、サーバー名に SQL Azureサーバー名を入力して、SQL Server 認証を選択して、SQL Azure の管理者アカウント名とパスワードを入力します。

f:id:miho_matsumoto:20100117070556j:image

[接続]ボタンをクリックした後、次のようなエラーが出る場合は、SQL Azure Firewall の設定を確認してください。

f:id:miho_matsumoto:20100117070554j:image


SQL Azure では、USE が使えないので、任意のデータベースへ接続したクエリ エディタを表示するには、オブジェクトエクスプローラで任意のデータベースをクリックしてから、[新しいクエリ]ボタンをクリックします。

f:id:miho_matsumoto:20100117070553j:image


また、[データベース エンジン クエリ]ボタンをクリックして、[データベース エンジンへの接続]ダイアログを表示し、[オプション]ボタンをクリックして、接続するデータベースを選択することもできます。

f:id:miho_matsumoto:20100117070550j:image

2010-01-16

SQL Azure Database を利用するための設定

SQL Azure Database を利用するには、最初に、下記の SQL Azure のポータル サイトで、次の設定を行う必要があります。


SQL Azure Database の管理者アカウントサーバーの作成

SQL Azure Firewall の設定

データベースの作成(Management Studio からでも可能)


管理者アカウントサーバーの作成は、次のように行います。

SQL Azureポータルサイトサブスクリプション名をクリックします。

f:id:miho_matsumoto:20100116103314j:image

[Terms of Use](使用条件)ページで使用条件を確認して、[I Accept]ボタンをクリックします。

f:id:miho_matsumoto:20100116103313j:image

[Create Server](サーバーの作成)ページで任意の管理者名とパスワードを入力し、利用するサーバーの場所(データセンター)を選択します。

f:id:miho_matsumoto:20100116075500j:image

[Create Server]ボタンをクリックし、作成が完了すると、次のようにサーバー名が表示されます。

f:id:miho_matsumoto:20100116104734j:image



SQL Azure Firewall の設定は、[Firewall Settings]タブで、[Add Rule]ボタンをクリックます。

f:id:miho_matsumoto:20100116104139j:image

自分の IP アドレスをもとにした(接続側の) IP アドレスの範囲を入力し、[Submit]ボタンをクリックすれば設定完了です。

f:id:miho_matsumoto:20100116081003j:image



SQL Azure Database 上にデータベースを作成するには、[Databases]タブで[Create Database]ボタンをクリックして作成します。

f:id:miho_matsumoto:20100116080350j:image

f:id:miho_matsumoto:20100116081015j:image


データベースの作成については、SQL Server Management Studio を利用しても行えます。

Windows Azure の申し込み方法

新年、明けましておめでとうございます。

年末・年始は「SQL Azure」の自習書の執筆のための検証作業に追われていました。現在は、やっと一息ついているところです。

SQL Azure 自習書の目次については、松本崇博のブログの次のページをご覧下さい。


弊社執筆の SQL Azure の自習書が公開されました〜

http://d.hatena.ne.jp/matu_tak/


SQL Azure は、Windows Azure プラット フォームの一部のクラウド ベースの RDB です。

MSDN サブスクライバ会員向けの特典プランを利用する申し込みは、次のように MSDN サブスクリプションホームページアクセスして「アカウント」ページを開き、「Windows Azure プラットフォーム」をクリックします。

f:id:miho_matsumoto:20100116071655j:image


先に進むと料金プランについて確認することができます。

f:id:miho_matsumoto:20100116071252j:image

f:id:miho_matsumoto:20100116071228j:image


MSDN サブスクライバ会員の特典メニューでは、開発用途限定で毎月一定量まで8ヶ月無料で各サービスを利用することができます。

2010-01-04

SQL Server 2008 R2 についての最新リソース情報

新年明けましておめでとうございます!

マイクロソフトのエバンジェリスト安納さんが、SQL Server 2008 R2 の最新リソース情報について、わかりやすくまとめて下さっています。

http://blogs.technet.com/junichia/archive/2009/12/22/3302016.aspx

ローンチに向けて、これからどんどんリソースが増えていくと思われますので、これからも安納さんのブログに注目ですね。

2009-12-30

SQL Server 2008 の Transact-SQL の TRY 〜 CATCH 構文でエラーに関する情報を取得するには

Transact-SQL の TRY 〜 CATCH 構文の CATCH ブロックでは、エラーに関する情報を取得することができます。

たとえば、エラー番号とエラーメッセージ、エラーの重大度レベルを取得するには、ERROR_NUMBER と ERROR_MESSAGE、ERROR_SEVERITY 関数を利用して、次のように記述します。

BEGIN TRY
	例外の発生を調べるコード
END TRY
BEGIN CATCH
	例外が発生したときに処理するコード
	SELECT ERROR_NUMBER(), ERROR_MESSAGE(), ERROR_SEVERITY()
END CATCH

なお、TRY 〜 CATCH 構文は SQL Server 2005 からの機能です。