2015年1月19日月曜日

復活のマザーシップPC「Aspire 5750G」、SQL-Server 2014 Expressを使うところまで来ました。

しばらく不調だった私のマザーシップPC「Aspire 5750G (64bit Windows7)」ですが、ハードディスクを新調し、ひととおり全ての設定を終えて、いよいよ実用段階に復帰しました。

一応、SQL-Server 2014 Expressから、オンラインストレージの「One Drive」上に置いたExcelのワークシートをテーブルとして読み込む所までやりましたんで、それについてちょっと書かせて頂きたいと思います。

ちなみに、認証方法は、Windows認証ではなくてSQL-SERVER認証でやってみました。


今回の記事では、SQL-Server 2014 EXPRESSをインストールした後の話からスタートさせて頂きたいと思います。

64bitのSQL-Serverから、Excelのワークシートをテーブルのように扱うためには、「Microsoft.ACE.OLEDB.12.0」というOLEDBプロバイダが必要です。

これ、MS Officeがプリインストールされているパソコンなら、実は既にインストールされているはずなんですが、私のパソコンはそうではないので、単体でマイクロソフトのダウンロードサイトから入手する必要がありました。

URLは以下の通りなんですが、マイクロソフトはしょっちゅうURLを変えるので、いつまでリンクされているかは未知数です。

Microsoft.ACE.OLEDB.12.0はこちら

ちなみに、32bitでは「Microsoft.JET.OLEDB.4.0」も使えるのですが、64bitでは廃止になってしまいました。


OLEDBプロバイダをインストールしただけでは実は使えません。

以下のコマンドを実行して、使用許可をする必要があります。

EXEC sp_configure 'show advanced options', 1
RECONFIGURE 
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE

USE master
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1

このあたりはお約束ですね。


さて、One Drive上に置いたExcelファイルを読み込みます。

その前に、マイクロソフトのOne Driveは、Windows 8.1ならば標準でOSに統合されているのですが、Windows 7はそうではないので、マイクロソフトから専用のアプリをダウンロードしてインストールします。

すると、UNC形式でOne Driveのディレクトリを指定可能になります。

・・・ですが、SQL-Server認証の場合は、ファイルを設置しただけでアクセスに行くと、One Driveの目的のフォルダにアクセス権が無いために、スクリーンショットのように「メッセージ 7399、レベル 16、状態 1、行 1 リンク サーバー "(null)" の OLE DB プロバイダー "Microsoft.ACE.OLEDB.12.0" により、エラーがレポートされました。プロバイダーからエラーに関する情報を取得できませんでした。 メッセージ 7303、レベル 16、状態 1、行 1 リンク サーバー "(null)" の OLE DB プロバイダー "Microsoft.ACE.OLEDB.12.0" のデータ ソース オブジェクトを初期化できません。というエラーが出てだめです。


自分のPCなのにアクセス権が無いとはこれいかに!?と思われるでしょうが、SQL-Server認証の場合は、自分のアカウントではなくて、あくまでもSQL-Serverのアカウントでフォルダにアクセスに行く、という動きになるのです。

そのアカウントは何かというと、SQL-SERVERの構成マネージャを開き、自分が立てたサーバー(私の場合は名前付きインスタンスで、SVR1としていますが)のサービスのプロパティを開き、そこのアカウント名を調べます。


私の場合は、SVR1という名前付きインスタンスでサーバー立てたので、アカウント名はMSSQL$SVR1となっていますが、目的のフォルダに、このアカウントの読み取り権限を与えてあげればOKです。

アカウントですが、これはケースバイケースで、たとえば、環境によっては、ビルトインアカウントのネットワークサービスだったりします。

その場合は、ビルトインアカウントのネットワークサービスに読み取り権限を与えればOKです。


すると、One Drive上のExcelのワークシートを、まるでテーブルのように扱う事が可能になりました。

繰り返しになりますが、SQL-SERVER認証の場合は、自分のWindowsのアカウントではなくて、SQL-SERVERのアカウントでフォルダにアクセスして行く、という動きになります。

SQL-SERVERのアカウントは、環境によって変わるので、そこは構成マネージャでチェックしておくとよろしかろうと思います。


ちなみに、やっぱり、4コア8スレッドのCore i7は快適ですね!!

自宅では、SQL-Serverで負荷のかかる処理なんかとてもやらないですけど、起動から何からサクサクです。

15.6インチノートのゆったり感もあって、このまま仕事しても全然違和感ないくらいだったりします。

ただ、SQL-SERVER 2014と言えば、Core i7ももちろん良いのですが、モバイル!!

そう、Atom Z3740搭載の、小型8インチのWindows 8.1タブレットで動かす方が、意外性がある分、新鮮であり感動スケールは大きいですね。

ちらっとした電卓の感覚で、バリバリのSQL-SERVER 2014 EXPRESSを使えてしまう衝撃は、実際に味わうとくせになります!!