こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ASP.NETからのデータベースの作成

こんにちは。
SQL SERVER 2005 ExpressとIIS5.0とASP.NET2.0+C#で使っています。

一台のサーバーマシンに、SQL SERVER 2005 ExpressとIIS5.0をインストールした状態なのですが、Webページ上のC#のプログラムよりデータベースを作成しようとすると、

CREATE DATABASE 権限がデータベース 'master' で拒否されました。

と、メッセージが出ます。
要するに権限がないというのはわかるのですが、このようにWebからログインしてきたユーザーに権限を付加することはできるのでしょうか?
あるいは、接続文字列かなんかで権限のあるユーザーでログインする、といったことが可能なものでしょうか?

現在は以下のようにして接続、作成を行おうとしています。

SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Server=.\\SQLEXPRESS;Integrated security=SSPI";
String strDatabase = "CREATE DATABASE newdatabase";
SqlCommand cmdDatabase = new SqlCommand(strDatabase, conn);
conn.Open();
cmdDatabase.ExecuteNonQuery();
conn.Close();

エラーの内容から、SQL SERVERそのものへのアクセスは成功しているように思えます。

よろしくお願いします。

投稿日時 - 2008-05-01 14:36:10

QNo.3989847

困ってます

質問者が選んだベストアンサー

Enterprise ManagerはSQL Server2000等に付属していた管理ツールですが、SQL Server 2005では廃止され、Management Studioというものになっています。これはSQL Server Express with Advanced Servicesにも含まれるので、無償で利用可能です。まずこれをインストールしておいたほうが後々管理しやすくなるはずです。
http://www.microsoft.com/downloads/details.aspx?FamilyId=5B5528B9-13E1-4DB9-A3FC-82116D598C3D&displaylang=ja


Management Studioで該当のサーバに接続し、セキュリティ->ログインにユーザーASPNETを追加、その際サーバーロールを設定する項目があるので、そこでdbcreatorにチェックを入れておけばASP.NETでもCREATE DATABASEが使用できるようになると思います。

参考URL:http://www.microsoft.com/downloads/details.aspx?FamilyId=5B5528B9-13E1-4DB9-A3FC-82116D598C3D&displaylang=ja

投稿日時 - 2008-05-10 10:17:04

お礼

こんなツールがあったのですね。

SQL Server Express with Advanced Servicesをインストールして、Management Studioから設定することができました。

大変ありがとうございました。

投稿日時 - 2008-05-12 18:27:47

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

失礼しました。データベースを動的に作成したいのでしたね(汗)
以下のサイトが参考になるかもしれません。英語のサイトですが。
ただ、SQLServer2005で使えるってことのようで、ExpressEditionでも使えるのかは不明です。

http://www.codeproject.com/KB/aspnet/Create_Database.aspx

投稿日時 - 2008-05-09 16:50:18

お礼

SQLDMOコンポーネントというものですね。
いろいろとツールを作る際には非常に便利そうです。
今回は#4さんの方法で対応できたのですが、今後必要となることもあるかもしれません。
ありがとうございました。

投稿日時 - 2008-05-12 18:31:51

ANo.2

以下のリンク先を参考になさってはどうでしょうか。
現在は既存のデータベースにテーブルを作成しようとして、権限がないですよと蹴られているのだとおもうので、リンク先の方法で新しいデータベースを作成してそれにテーブルを作成するようにすれば権限が付与されるのかもしれません。
リンク先はASP.NETから使用するときの記事なのでうまくいくかもしれません。

http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_02/vs2005db_02_01.html

投稿日時 - 2008-05-09 09:07:59

お礼

ありがとうございます。でも違うんです。
ASP.NETから新規にデータベースを作成したいのです。

投稿日時 - 2008-05-09 09:46:13

ANo.1

ちょっと自分の知識も曖昧なのですが、IIS5.0のASP.NETでは、リソースにアクセスする時にはASPNETというアカウントを使用して動くはずだと思いました。(IIS6.0ならNT AUTHORITY/NETWORK SERVICEだったかな)
ですので、SQLServerの認証がwindows認証で設定してあるようですので、ASPNETのアカウントでMasterのデータベースにアクセスできるように権限をつけてあげればよいはずです。
CREATE文なので"Create table"の権限を与えれば動きます。もちろんそのほかのこともしたいなら、それに対する権限を与えてください。

http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000015.aspx

投稿日時 - 2008-05-02 16:15:49

補足

お返事遅くなりまして申し訳ありません。情報ありがとうございます。

リンク先も見てみたのですが、当方の環境がExpressだからでしょうか、SQL Server Enterprise Managerなるものが存在しませんでした。他になにか設定する方法があればよいのですが・・。

とりあえず、コントロールパネルの「ユーザーとパスワード」より、ユーザーASPNETのグループをSQLServer2005MSSQLUser$XXXXX$SQLEXPRESSに変更して使用しておりますが、これでよいのでしょうか?

投稿日時 - 2008-05-07 09:51:42