あれとアレは混ぜるな危険

日々精進をしているふり

SQLAzureを使ってみる。(最終回 ホントにテーブル作っちゃう編)

どうも、はるたまです。二日酔い中です。がんばって、実際にTable作ってINSERTしていきましょう。

結局、何がいけなかったのか?

前回、普通にテーブルを作ってInseretしようとしましたが、

メッセージ 40054、レベル 16、状態 1、行 1
Heaps can not be replicated tables. Please create a clustered index for the table.

こんなメッセージでInsertがエラーになってしましました。

SQLAzureでは、各テーブルは必ずクラスタ化インデクスが張られているカラムを持っていなければいけません。
SQLAzureのテーブルが持っている行データは複数のディスクに分散して保存されます。このような動作により、ハードウエア障害への耐性や、検索パフォーマンスを向上させています。が、一方で各テーブルはクラスタ化インデクスを必ず要求されることとなります。

Insertできるテーブルを作る。

とりあえず、Insertできないiremonoテーブルは使い道がないので消しておきましょうか。

DROP TABLE iremono

こんどは、ちゃんとInsertできるiremonoテーブルを作りましょう。

CREATE TABLE iremono(
	suuji int PRIMARY KEY CLUSTERED,
	moji nvarchar(200) NULL
)

こんな風にテーブルを作ると、ちゃんとInsertできるようになって、

INSERT INTO iremono
	(suuji, moji)
VALUES
	(123, 'もじもじ')

ほんとにInsertされたかというと、

SELECT * FROM iremono

ちゃんとInsertされてますね。

suuji       moji
----------- ------------------
123         ????

(1 行処理されました)

日本語が化けて表示されてしまいますが、ADO.NET経由でアクセスするとちゃんと日本語が取れるようです。まだ試してませんが・・・

ということで、SQL Azureの基本的な使い方は以上になります。