トップ回答者
データベース上でキャッシュ機能を有効化できない

質問
-
ASP.NETを勉強中の初心者です。
その中でデータベースキャッシュ機能を利用する為には、その機能を事前に有効化する必要がある
との記述がありました。
コマンドプロンプトから以下の操作を行ったところ、エラーとなって、実行できません。
アドバイスをお願いします。
コマンドプロンプトからCD命令によってカレントを<システムルート>¥Microsoft.NET¥Framework¥<バージョン番号>に
移した後、
>aspnet_regsql.exe -s .¥SQLEXPRESS -E -d データベース名 -ed
と入力したところ、以下のメッセージがでました。
SQL キャッシュ依存のため、データベースを有効にします。
.エラーが発生しました。例外の詳細:
このログインで要求されたデータベース "SelfDB.mdf" を開けません。
ログインに失敗しました。
ユーザー KOMIYA-TAKANORI\小宮隆則 はログインできませんでした。
キャッシュの依存関係を登録するために SQL データベースに接続でき
ません
回答
-
こんにちは、naginoです。
.NET Framework と SQL Server のバージョンが分かりませんので、以下 .NET Framework 3.5 と SQL Server 2005 として以下記述します。
バージョンが異なる場合は下記を参考にご自身で読み替え、該当の URL をご参照ください。
コマンドから察するに、SQL キャッシュ依存関係の設定でしょうか。
http://msdn.microsoft.com/ja-jp/library/ms229862.aspx (コマンド自体の説明)
http://msdn.microsoft.com/ja-jp/library/e3w8402y.aspx (SQL キャッシュ依存関係のチュートリアル)
私はこのような高度な機能は使ったことが無いのですが、エラーメッセージを見る限りではメッセージにあるとおりではないでしょうか。
つまり、現在ログオンしているユーザー(KOMIYA-TAKANORI\小宮隆則)が SelfDB に対する管理者特権を持っていないのではないでしょうか。
ここでいう管理者特権は、具体的には 1 つ目の URL のページ中ほどにあるメモにありますように「db_ddladmin ロールおよび dd_securityadmin ロール」を使用しているデータベースユーザーに付与すれば良いかと思います。
現在ログオンしているユーザーに管理者権限を与えてから実行するか、管理者権限を持つアカウントでログオンしなおして実行するか、管理者権限を持つアカウントを U と P オプションで指定して実行してみてはいかがでしょうか。
具体的にどの方法が良いのかは、環境の構成やセキュリティ方針によりますので、使用されている環境の管理者の方とご相談ください。
また、Windows のアカウント/ユーザー と SQL Server のログインやデータベースユーザーとの対応付けはデータベースの管理者の方にご確認ください。
ご参考になれば幸いです。
MCITP(Database Developer/Database Administrator)- 回答としてマーク 大久保直美Microsoft employee 2009年4月7日 5:41
すべての返信
-
こんにちは、naginoです。
.NET Framework と SQL Server のバージョンが分かりませんので、以下 .NET Framework 3.5 と SQL Server 2005 として以下記述します。
バージョンが異なる場合は下記を参考にご自身で読み替え、該当の URL をご参照ください。
コマンドから察するに、SQL キャッシュ依存関係の設定でしょうか。
http://msdn.microsoft.com/ja-jp/library/ms229862.aspx (コマンド自体の説明)
http://msdn.microsoft.com/ja-jp/library/e3w8402y.aspx (SQL キャッシュ依存関係のチュートリアル)
私はこのような高度な機能は使ったことが無いのですが、エラーメッセージを見る限りではメッセージにあるとおりではないでしょうか。
つまり、現在ログオンしているユーザー(KOMIYA-TAKANORI\小宮隆則)が SelfDB に対する管理者特権を持っていないのではないでしょうか。
ここでいう管理者特権は、具体的には 1 つ目の URL のページ中ほどにあるメモにありますように「db_ddladmin ロールおよび dd_securityadmin ロール」を使用しているデータベースユーザーに付与すれば良いかと思います。
現在ログオンしているユーザーに管理者権限を与えてから実行するか、管理者権限を持つアカウントでログオンしなおして実行するか、管理者権限を持つアカウントを U と P オプションで指定して実行してみてはいかがでしょうか。
具体的にどの方法が良いのかは、環境の構成やセキュリティ方針によりますので、使用されている環境の管理者の方とご相談ください。
また、Windows のアカウント/ユーザー と SQL Server のログインやデータベースユーザーとの対応付けはデータベースの管理者の方にご確認ください。
ご参考になれば幸いです。
MCITP(Database Developer/Database Administrator)- 回答としてマーク 大久保直美Microsoft employee 2009年4月7日 5:41
-
こんにちは、naginoです。
Visual Web Developer 2008 Express Edition をご利用とのこと、了解しました。
手元で同ツールを使用できる環境が無いため、以下記憶と推測を元に記載していますので、一致しない箇所などありましたらその旨ご返信ください。
なお、念のための確認ですが、Visual Web Developer 2008 Express Edition はご自身でインストールされましたでしょうか。
もしそうであれば特に問題ありません。
それで、スタートメニューに「Microsoft SQL Server 2008」ないしそれに類似するような項目がありますでしょうか。
また、その「Microsoft SQL Server 2008」の中に「SQL Server Management Studio」ないしそれに類似するような項目がありますでしょうか。
もしある場合、それを選択していただくとツールが起動します。
最初に認証画面が表示されますので、「認証」で「Windows 認証」を選択して「接続」を押下してください。
ここでエラーになる場合は、他の設定項目の変更か、Windows にログオンしているアカウントの設定を変更する必要があるかもしれません。
ツールが起動したら、画面左側にある「オブジェクトエクスプローラ」の中から「セキュリティ」を展開していただき、その下に「ログイン」と表示されますでしょうか。
ログインを展開すると幾つか人のアイコンとともに項目が表示されると思いますが、その中に「KOMIYA-TAKANORI\小宮隆則」もしくは「BUILTIN\USERS」といったものはありますでしょうか。
もしある場合、右クリックして表示されるメニューからプロパティを選択すると新しく画面が表示されます。
その画面左側の「ページの選択」から「ユーザーマッピング」を選択します。
画面右上で「SelfDB」の左側のチェックボックスをチェックし、画面右下で「db_ddladmin」と「db_securityadmin」の左側のチェックボックスをともにチェックし、「OK」を押下してください。
(dd_securityadmin は、引用元のページの誤記だと思われます。今気が付きました。)
ここまで進んだ場合は、再度最初のコマンドを実行してみてください。
以上、操作の 1 例になります。
環境によってその他の操作手順等が様々ありますが、ご参考になれば幸いです。
MCITP(Database Developer/Database Administrator) -
早速のご指導ありがとうございます。
VWD2008 EXPRESS Editionは自身でインストールしました。
スタートメニューにMicrosoft SQL Server 2008 は存在します。
その配下には、「SQLServerインストールセンター」と、「SQLServerエラーと使用状況レポート」、
「SQLServer構成マネージャ」の3つの項目があります。
「SQLServer構成マネージャ」の配下には、「SQLServerのサービス」、「SQLServerネットワーク構成」、
「SQL Native Clientの構成」の3項目があります。
ご指導にある、「SQL Server Management Studio」ないしそれに類似するような項目はみあたりません。
ちなみに、上記「SQLServerのサービス」の中の「SQLServer(SQLEXPRESS)」からプロパテイを出し、ログオンを
WindowsXPユーザである「小宮隆則」と同一にして現在稼働中です。
VWD2008 EXPRESS Editionをインストールする際にミスがあったのかもしれませんね。 -
こんにちは、naginoです。
伺っている情報を拝見する限り、VWD 2008 のインストールに問題は無いと思われます。
実環境が手元に無く、関連する各種ツールや機能が正確に把握できておりませんので、その点あらかじめご了承ください。
SQL Server 2008 Express Edition にはグラフィカルな管理ツールが無償で提供されています。
今後の開発や管理を進める際に大変便利ですので、できればインストールされることをお勧めします。
おそらく下記からダウンロードできるインストーラで、既存のインストールに対して管理ツールを追加するような形でインストールできるはずですが、実環境で試せていないので手順が提示できません。
http://www.microsoft.com/downloads/details.aspx?familyid=7522A683-4CB2-454E-B908-E805E9BD4E28&displaylang=ja
うまくいけば、SQL Server Management Studio Basic か Express Edition か類する名称のツールが追加されるかと思います。
一度ご確認いただければと思います。
MCITP(Database Developer/Database Administrator) -
すみません、雑事で時間を空けてしまいました。どうも仕事の忙暇の差が大きく、いけません。さて、表示されているエラーは、ダウンロードするファイルが環境にあっていないことが原因だと思われます。お使いの環境が 64bit 環境の場合は「SQLEXPRWT_x64_JPN.exe」を、32bit 環境の場合は「SQLEXPRWT_x86_JPN.exe」をダウンロードして実行してください。それはそれとして、改めて見返してみて気になったのですが、SQL Server はどのようにインストールされたのでしょうか。インストールの際に Windows にログオンしていたアカウントであれば、そのまま SQL Server の管理者権限を持つので全てのデータベースにアクセスできたかと思うのですが、現在お使いのアカウント「KOMIYA-TAKANORI\小宮隆則」とは別のアカウントでインストールされたのでしょうか。普段 Administrators のアカウントを使ってしまっているので、正確なところが分からないのですが、気になりましたのでお分かりでしたらご確認いただけますでしょうか。また、SQL Server をインストールした際に SQL Server 認証を有効にされましたでしょうか。その際の sa のパスワードは控えていらっしゃいますでしょうか。もしそうであれば、その sa のアカウントが管理者特権を持っていますので、以前記載しましたとおりコマンドに U オプションと P オプションで sa とパスワードを指定して実行してみてください。ご参考になれば幸いです。
MCITP(Database Developer/Database Administrator)