dポイントプレゼントキャンペーン実施中!

こんにちは。
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そのものへのアクセスは成功しているように思えます。

よろしくお願いします。

A 回答 (4件)

Enterprise ManagerはSQL Server2000等に付属していた管理ツールですが、SQL Server 2005では廃止され、Management Studioというものになっています。

これはSQL Server Express with Advanced Servicesにも含まれるので、無償で利用可能です。まずこれをインストールしておいたほうが後々管理しやすくなるはずです。
http://www.microsoft.com/downloads/details.aspx? …


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

参考URL:http://www.microsoft.com/downloads/details.aspx? …
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2008/05/12 18:27

失礼しました。

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

http://www.codeproject.com/KB/aspnet/Create_Data …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/12 18:31

以下のリンク先を参考になさってはどうでしょうか。


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

http://www.atmarkit.co.jp/fdotnet/vs2005db/vs200 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/09 09:46

ちょっと自分の知識も曖昧なのですが、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/p …

この回答への補足

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

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

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

補足日時:2008/05/07 09:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!