- ベストアンサー
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そのものへのアクセスは成功しているように思えます。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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が使用できるようになると思います。
その他の回答 (3)
- ape5
- ベストアンサー率57% (85/148)
失礼しました。データベースを動的に作成したいのでしたね(汗) 以下のサイトが参考になるかもしれません。英語のサイトですが。 ただ、SQLServer2005で使えるってことのようで、ExpressEditionでも使えるのかは不明です。 http://www.codeproject.com/KB/aspnet/Create_Database.aspx
お礼
SQLDMOコンポーネントというものですね。 いろいろとツールを作る際には非常に便利そうです。 今回は#4さんの方法で対応できたのですが、今後必要となることもあるかもしれません。 ありがとうございました。
- ape5
- ベストアンサー率57% (85/148)
以下のリンク先を参考になさってはどうでしょうか。 現在は既存のデータベースにテーブルを作成しようとして、権限がないですよと蹴られているのだとおもうので、リンク先の方法で新しいデータベースを作成してそれにテーブルを作成するようにすれば権限が付与されるのかもしれません。 リンク先はASP.NETから使用するときの記事なのでうまくいくかもしれません。 http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_02/vs2005db_02_01.html
お礼
ありがとうございます。でも違うんです。 ASP.NETから新規にデータベースを作成したいのです。
- ape5
- ベストアンサー率57% (85/148)
ちょっと自分の知識も曖昧なのですが、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
補足
お返事遅くなりまして申し訳ありません。情報ありがとうございます。 リンク先も見てみたのですが、当方の環境がExpressだからでしょうか、SQL Server Enterprise Managerなるものが存在しませんでした。他になにか設定する方法があればよいのですが・・。 とりあえず、コントロールパネルの「ユーザーとパスワード」より、ユーザーASPNETのグループをSQLServer2005MSSQLUser$XXXXX$SQLEXPRESSに変更して使用しておりますが、これでよいのでしょうか?
お礼
こんなツールがあったのですね。 SQL Server Express with Advanced Servicesをインストールして、Management Studioから設定することができました。 大変ありがとうございました。