Windows Technical Preview にSQL Server をインストールする

Azure のご評価をしている多くの方は、Windows Technical Preview (俗にいうWindows 10)もご評価されていると思います。
SQL Server のインストールが出来なくて、自分のPC上での開発や検証に支障がある方もいらっしゃるかもしれません。

 

話は単純です。

Windows Technical Previewと同じ言語のSQL Serverでインストールをしてください。つまり、「英語」版のSQL Server 2014 Developerなら、インストールが出来ますので・・・

広告

PostgreSQLのデータをSQL Server に引っ越しさせる (SSIS版)

細かいところは、さておき、大まかな手順を。
ここでは、スケジューリング化出来る、SQL ServerのIntegration Service (SSIS) を使う例を。
SQL Serverに詳しくない方もいらっしゃると思いますので、ポイントは比較的丁寧に記載します。

概要

ここでは、以下のステップで、移行をさせます。ストアドプロシージャーは機械的な移行は大変難しいので、ここでは対象外とします。

PostgreSQL == (SSIS) è SQL Server (On Premise)
Azureへも。SQL Server からè (Windows Azureの) SQL database へ。これはたくさんツールがありますので。

 

注意点

  • SQL Serverには配列の概念がありません。
  • ODBC Driver。Visual Studioを含む多くのアプリは32bit。例えDBとOSが64bitでも。
  • SQL Server 2012 SP1のCU3には、Integration Servicesのプロジェクトを作成できない問題があり。以下のホットフィックスでそれは修正されます。

 

事前作業

 

作業手順

PostgreSQL DBは以下の様になっています。
pgAdmin III もGUIでDB管理が出来て、大変良いツールですね。

以下にDDL文を。DBとSchemaはデフォルトのままです。

 

CREATE DATABASE postgres

WITH OWNER = postgres

ENCODING = ‘UTF8’

TABLESPACE = pg_default

LC_COLLATE = ‘Japanese_Japan.932’

LC_CTYPE = ‘Japanese_Japan.932’

CONNECTION LIMIT = -1;

 

CREATE SCHEMA public

AUTHORIZATION postgres;

 

GRANT ALL ON SCHEMA public TO postgres;

GRANT ALL ON SCHEMA public TO public;

COMMENT ON SCHEMA public

IS ‘standard public schema’;

 

— Table: table01

 

— DROP TABLE table01;

 

CREATE TABLE table01

(

col1 integer NOT NULL,

col2 date,

col3 character(1000),

CONSTRAINT primarykey01 PRIMARY KEY (col1)

)

WITH (

OIDS=FALSE

);

ALTER TABLE table01

OWNER TO postgres;

 

— View: view01

 

— DROP VIEW view01;

 

CREATE OR REPLACE VIEW view01 AS

SELECT table01.col1, table01.col2, table01.col3

FROM table01

WHERE date_part(‘year’::text, table01.col2) = date_part(‘year’::text, ‘now’::text::date);

 

ALTER TABLE view01

OWNER TO postgres;

 

要は、テーブルが1つと、ビューが1つですね(笑)。
ビューのSQL文はテーブルスキャンを必ずしますので、本番では使わない事をお勧めします・・・

こちらがテーブルの内容です。

 

SQL Server Express内にDB作成

SSISでは、データベースそのものは作成してくれません。名前は何でもいいです。

SQL Server Management Studio から、行います。GUIからでも、SQL 文を発行しても良いです。

 

ここでは、以下の様に。
データのサイズは大きめにとってください。以下の画面ですと、[ファイルの種類] の[初期サイズ (MB)] を大きめにしてください。

 

また、一時テーブルであれば、ログファイルの管理は不要です。
SQL Serverでは、ログファイルへのデータベースのログ書き込みを「復旧モデル」にて定義します。バッチ用の作業DBでしたら、途中でエラーがあったら全部やり直しでもいいかと思いますので、[単純] にするのをおすすめします。

SQL Server 復旧モデル: http://msdn.microsoft.com/ja-jp/library/ms189275.aspx

 

SQL Server Data Toolsを起動

SSISのジョブは、SQL Server Data Toolsより作成をしていきます。
[ビジネス インテリジェンス] より [Integration Services プロジェクト] を選択します。

 

データフローの作成

制御フローの画面が表示されています。
制御フローとは、いわゆる条件分岐、ループなどのプログラミングにあたる部分を作成していくところになります。
データフローは、変換など、データ処理に特化した部分を作成していきます。

画面左の[SSIS ツールボックス]から[データ フロー タスク] をドラックアンドドロップにて、制御フロー内にもってきます。

PostgreSQLへの接続設定

画面一番下に、[接続マネージャー]があります。ここに、データソースであるPostgreSQLのインスタンスと、インポート先であるSQL Serverのインスタンスへの接続設定を作成します。

[新しい接続] から PostgreSQLのODBCドライバーを選択します。

 

ODBC を選択し、[追加]をクリック。

最初は空ですから、[新規作成]をクリックします。

[接続マネージャー] では[接続文字列を使用]を選択し、[ビルド]を選択します。

[データソース]を作成します。ここでは、[新規作成]を選択します。

 

ようやく、PostgreSQLのドライバーまでたどり着きました・・・

データソースの新規作成に適切な名前をつけまして。

完了です。

 

PostgreSQLへの接続文字列の設定が出てきますので、各項目にデータを入力します。
[OK]を押した後に、データソース 作成画面の [DSN名] のところがうまります。そこで[OK]を押すと、また、この画面にてパスワード入力を求められます。

 

これでようやくODBC Driverの接続設定が完了します。
以下の画面で[接続テスト]をして、PostgreSQLへの接続確認を行ってください。

 

接続できるようですと、以下の画面が表示されます。

これで、ようやく、ODBC設定ができます。

 

 

SQL Server への接続設定

同じく、接続マネージャーを右クリックして、SQL Serverへの接続の設定をします。
[新しいADO.NET接続] を選択します。

 

ADO.NET の接続マネージャーの構成 は空ですので [新規作成] を押します。

 

[接続マネージャー] から、サーバー名、ログイン設定を選択し、SQL Serverへの接続が出来ていると、データベースを選択できるようになります。

[OK]を押し、

 

元の制御タスクの画面に戻ります。

 

データコピーの設定

データフロータスクに画面を切り替えます。
画面左側の[SSIS ツールボックス]の項目がガラッと入れ替わります。

[SSISツールボックス]の[その他の変換元] から、[ODBC 入力元]を画面にドラックアンドドロップします。
赤いバツのマークは、設定が不足していることを示しています。

 

[ODBC変換元]を右クリックして、[編集]を選択します。これで、データベースの中の、どのオブジェクト(テーブルなど)からデータを持ってくるのかを指定します。

 

テーブルを指定します。

[プレビュー] ボタンを押すと、データの内容も確認できます。
ここで内容が見えると安心しますね。別のツールですからね。

 

次に、コピー先のSQL Serverを指定します。

[SSIS ツールボックス] から[ADO NET変換先]をドラックアンドドロップします。

 

“ODBC 変換先” を選択すると、青と、赤の矢印があるのが確認できます。青は正常終了時。赤はエラー発生時に、次にどこにつなぐかを設定します。青の矢印をドラックして、”ADO NET 変換先” に接続させます。

 

こんな形になります。

“ADO NET” 変換先にテーブルを作成します。”ADO NET 変換先”を右クリックして、[編集]を選択します。
ADO.NET 変換先エディターが表示されます。
ここでは、テーブルは存在していないですので [テーブルまたはビューを使用] の [新規作成] からテーブル作成のSQL文画面を呼び出します。

注意点です。

  • データ型はある程度自動的にマッピングしてくれます。
  • テーブル名は自動的に設定してくれませんので、修正ください。ここでは “table01” にする必要がありますね。
  • 主キーなどの制約系は作成してくれません。ここではPrimary Keyを追加する必要がありますね。

 

先の[ADO.NET 変換先エディター] の [マッピング] のところを選択すると、1:1での列マッピングの設定を見て取れます。

さ、これで一段落です。

32bitの実行環境を設定する。

このまま実行するとエラーになります。Visual Studioは32bit環境ですから、64bitのドライバーは動作しません。

以下、F5キーにてそのまま実行したもの。

実行環境を32bitに設定します。

画面右側の [ソリューション エクスプローラー] から、プロジェクトを右クリックします。その中から、[プロパティ]を選択します。

[構成 プロパティ] – [デバック] の [Run64BitRuntime]をFalseに設定します。

さ、これで、F5キーで、再度実行してみましょう。

 

データの確認

さ、SQL Server の中のデータを確認しましょう。
SQL Server Management Studio で移行先のデータベースを選択し、[最新の情報に更新] を押します。
新たにテーブルが作成されているのが分かると思います。

作成されたテーブルを右クリックし、[上位 1000行の選択] を押してください。

 

SELECT文が作成され、結果が表示されます。

 

SSISですが、一度作成してしまえば、別コンピュータで実行させる事も、指定した時間に実行させる事もできる非常に便利な機能になります。

DDL文の移行をさせるよりは、定期的なデータ同期での利用を是非ご検討ください。

http://www.microsoft.com/ja-jp/sqlserver/2012/technology/self-learning.aspx

Microsoft 製サーバー製品の計画的な停止手順

今回の東日本の震災に協力できる方法として、節電があります。東京電力でも首都圏の計画停止をしていますが、それに備えるためにも、以下、可能な限りまとめてみます。あちこちを見なくても済むように。
なお、正式な絶対に間違いが無い、という情報ではない事だけご了承ください。
ですが、いずれも「元データベース」には影響がほとんどないと思いますので、他に手段がなければ、是非。

また、いくつかマイクロソフト製品の評価版をのせています。今回の用途は本番かと思いますので、その点のライセンス上の違いについてはご注意ください。

基本

バックアップとリストアです。バックアップは、OS (サーバー仮想化にて)、アプリケーションのデータ。の2段階で考えてください。Microsoft製品は、ADに依存して、バックアップデータが他のドメインに戻せない場合もありますので、ご注意を。

停電の場合は、フェイルオーバークラスターが組まれていても、それ全部が停止する可能性があります。ですので、データのバックアップを基本に。

HDDについてはしょうがない事があります。モーターで連続稼働をしているものは、一旦停止すると、二度と稼働しなくなる確率が増えます。もしかしたら、HDDのストックをご用意いただいた方がいいかもしれません。

以下、取り急ぎの「バックアップ」についてです。

Microsoft製品は、System Center Data Protection Manager 2010にておおむね対応もできます。ただ、ツールでブラックボックス化されている部分もありますので、リストア時にもしかしたら、このツールが必須になってしまうかもしれません。またADが必須なので、その点もご注意を。

評価版: http://technet.microsoft.com/ja-jp/systemcenter/dm/bb727240.aspx

 

1. OS

P2V

System Center Virtual Machine Manager 2008 R2 などのサーバー仮想化管理製品が使える状態であれば、OSごとバックアップです。

評価版: http://technet.microsoft.com/ja-jp/evalcenter/cc793138.aspx

手順:http://technet.microsoft.com/ja-jp/virtualization/ff603844.aspx

p. 98から

Windows Server

OS標準のバックアップ機能があります。「バックアップと復元」です。

Windows 2000 Server: http://technet.microsoft.com/en-us/library/bb727088.aspx

英語ですので、適時「Microsoft Translator」などで、翻訳してください。

Microsoft Translator: http://www.microsofttranslator.com/

こちらは、IE8以降であれば、アクセラレーターから。そうでなくとも、ページのURLを大きなテキスト部分に入力すると、英語などに翻訳してくれます

仮想サーバー

Hyper-Vであれば、「エクスポート」するか、一旦サービスを止めて、VHDファイルをコピーしてください

2: SQL Server

SQL Serverの各データベースは基本オンラインバックアップです。また、バックアップ後のファイルは、他のSQL Serverのインスタンスにも戻せますので、比較的やりやすいです。また、SQL Server 2000以降操作手順が大きく変わりませんので、その点も安心です。

バックアップと復元: http://technet.microsoft.com/ja-jp/library/ms187048.aspx

手順は、SQL Server Management Studioから、以下にてウィザード起動します。

SQLServerバックアップ

3: Exchange Server

こちらは手順書をダウンロードください

Exchange Server 2000: http://www.microsoft.com/downloads/details.aspx?FamilyID=c83a1161-f22b-4862-97a4-4a888839a455&displaylang=ja

Exchange Server 2003: http://www.microsoft.com/downloads/details.aspx?FamilyID=A58F49C5-1190-4FBF-AEDE-007A8F366B0E&displayLang=ja

Exchange Server 2007: http://technet.microsoft.com/ja-jp/library/aa998848(EXCHG.80).aspx

Exchange Server 2010: http://technet.microsoft.com/ja-jp/library/dd876874.aspx

4: SharePoint Server

SharePoint Server はデータをSQL Serverに保存をしているのですが、それ以外の場所にも例えば画像ファイルなどを保存している場合もあります。よって、基本はSharePoint Server標準のstsadmコマンドにてバックアップを取得されることをお勧めします

SharePoint Server 2003: http://office.microsoft.com/en-us/sharepoint-portal-server-it/backing-up-and-restoring-servers-on-the-server-farm-HA001160345.aspx

こちらも英語です。すいません。

SharePoint Server 2007: http://technet.microsoft.com/ja-jp/library/cc262412(office.12).aspx

SharePoint Server 2010: http://technet.microsoft.com/ja-jp/library/ee662536.aspx

—– (以下、3付き17日追記 ) —-

SharePoint Server 2010の災害対策情報。英語ですので、Microsoft Translatorにて適時機械翻訳をお願いします。

http://technet.microsoft.com/ja-jp/sharepoint/ff601831

———————————————————

IISやファイルサーバー

robocopy.exe がおすすめです。以前も自分のBlogに書きましたが。

バックアップ先

こんな時だからこそ、クラウドがいいと思うのです。ですが、ファイルサイズが大きすぎる場合には、手元のUSB HDDなども現実的かもしれません。

今、日本マイクロソフトでは、90日間Windows Azureを無償で提供しています。100TBのストレージが使えます。

以下が、私の考えているものです。決してこうしてください、というものではありません。

1. Azure の契約。以下のドキュメントをご参考に

https://daiyuhatakeyama.files.wordpress.com/2011/03/windowsazureplatform_e382a2e382abe382a6e383b3e38388e4bd9ce68890e6898be9a086.pdf

2. Storageの設定

  • Azure管理ポータルに接続。契約時の管理者のWindows Live IDにて。

https://windows.azure.com/

  • [Hosted Services, Storage …] などを選択。画面上部の [New Storage Account]を選択する

image

  • ストレージアカウント作成画面が出てくるので、URLとデータセンターを決める。データセンターは、[East Asia] =香港 がおすすめ。

image

  • これで、ストレージが使えるようになります。画面右側の [Blob URL]がファイルサーバー「的」なBlobのアドレスになります。

image

3. フォルダの作成

以下のフリーツールが個人的なおすすめです。

Azure Storage Explorer: http://azurestorageexplorer.codeplex.com/

ツール起動後、[Add Account] にて、設定した各項目を設定

image

Storage account name: Blob URLの最初の “.”まで。例えば “dahatakefile” など

Storage account key: Azure 管理画面の [Primary access key] にて表示されるダイアログ画面の、[Primary …]で表示されいる部分を [Copy to Clipboard]で、コピー。その値を貼り付け。

image

4. ファイルシステムと、Azureをマウントさせます。

  • Gladinet Desktopをダウンロード

http://www.gladinet.com/

Azure Blog Storage とファイルシステムをマッピングしてくれるツールです。無償でも結構いけます。3.0になって安定しました。

インストール後、起動させると、タスクバーに常駐します。

image

右クリックして、[Management Console]を選択します。管理画面が起動します。

image

画面上の [Cloud Drive]を選択します。

image

画面左側の プラスマークが付いたアイコン をクリックすると、ウィザードが起動します。Azure Blob Storageを選んで (勿論、他でもいいですが、今回100TBまで使えますので)、

image

以下を入力します。

Access Point: Azure 管理画面の Blob URL
例: dahatakefile.blob.core.windows.net

Account Name: Azure Blob URLの最初の.まで。
例: dahatakefile

Primary Access Key: 先ほどと一緒

 

これで、初期設定ですと、 Z Drive にマウントできると思います。

このツールは、ローカルキャッシュとして、%LOCALAPPDATA%\Gladinet\cache にファイルをコピーします。つまり、このキャッシュ設定は、場合によっては大きな空きのある場所に設定ください。

image

後は、robocopyも動きます。
例えば:

robocopy <元の場所> <Gladinetにてマウントしたドライブ\> /MIR /Z

SQL ServerとSQL Azureの同期

今回ご提供している無料オファーですと1GB / 1か月ですので、本番システムではあまり使えないかもしれませんが・・・宜しければ、という意味で。

http://msdn.microsoft.com/ja-jp/windowsazure/gg261724.aspx

このツールが便利です。SQL Azureは1DB 50GBまでですので、その範囲であれば、何個DBを作っても構いません。

http://sqlazuremw.codeplex.com/

今日時点では、v3.5.7 が動作します。zip解凍して、exeを起動するだけです。

こちら、日本語対応をしておりますので、ほぼウィザードに従って動作すると思います。

(以下、3月17日追記)

Windows のリモートからの停止

英語のドキュメントなのですが、Microsoft Translatorにて日本語にも翻訳できますので、是非ご参考にしてください。

http://social.technet.microsoft.com/wiki/contents/articles/windows-server-emergency-management-resources.aspx

 

こちらも参考になります。

http://technet.microsoft.com/ja-jp/library/cc770416.aspx

SQL Server 2008 – FileStream

私たち、マイクロソフトの独りよがりになっているかもしれません。
最近、イベント・書籍・Webなどを通じて、マイクロソフトが盛んにお伝えしている各製品の機能をご存じない方が結構いらっしゃることに気がつきました。
ですので、ここで敢えて取り上げたいと思います。

SQL Server 2008 の開発注力ポイントのひとつに「Beyond the Relational」があります。
一言でいうと、「Tableに入れられるもの以外もRDBMSで管理する」ための機能です。

映像・写真などのコンテンツを扱っていらっしゃる皆様であれば、その重要性は良くご理解されていると思います。
既存ではどうやっているかといえば:

  • データ
    • メタデータ: RDBMS
    • ファイル: 巨大ファイルサーバー(SAN/NASなど)
  • 管理
    • 独自のシステム

だったのではないでしょうか?
システム経由でないと、そのデータの整合性は担保しずらいわけですね。

SQL Server 2008には、3つの手法で、RDBMSが一括して「データ」を「管理」できるようになっています。

  1. BLOB: これは以前からありましたが、ファイルデータをRDBMSのテーブルのひとつの列に格納します
  2. File Stream [NEW]: BLOBデータはファイルシステム上(NTFSのみ)に直接格納します。
  3. Remote BLOB [NEW]: 別のサーバーにBLOBをおくことができます。専用のAPIが用意されていて、それに対応したベンダー作成のストレージであれば、ファイルサーバーでもRDBMSでも、リモートのストレージの形式は問いません

SQL Server 2008 beyond Relational

個人的にお勧めなのが、FileStreamです。

  • パフォーマンスがBLOBに比べると良くなると言われています
  • ストレージ容量の制限が、飛躍的に拡大します。該当ボリュームの最大値まで、データ格納が可能です
  • Win32 Streaming APIも用意されていますので、開発する側から見たときに、SQL文を記述する以外の場面でも活用できると思います。

「素材管理システム」「デジタルアーカイブシステム」

見直しの時に、更に管理性の高まっているこの機能、是非検証してみてはいかがでしょうか?