質問 |
||
| QNo.3989847 | ASP.NETからのデータベースの作成 | |
|---|---|---|
| 質問者:titokani |
こんにちは。 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そのものへのアクセスは成功しているように思えます。 よろしくお願いします。 |
|
困り度:
|
||
| 質問投稿日時: 08/05/01 14:36 |
||
回答良回答20pt |
|
| ANo.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-1... Management Studioで該当のサーバに接続し、セキュリティ->ログインにユーザーASPNETを追加、その際サーバーロールを設定する項目があるので、そこでdbcreatorにチェックを入れておけばASP.NETでもCREATE DATABASEが使用できるようになると思います。 |
|---|---|
| 回答者:hofuhofu | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/10 10:17 |
|
| |
| 参考URL: | http://www.microsoft.com/downloads/details.aspx?FamilyId=5B5528B9-1... |
| この回答へのお礼 | こんなツールがあったのですね。 SQL Server Express with Advanced Servicesをインストールして、Management Studioから設定することができました。 大変ありがとうございました。 |
回答良回答10pt |
|
| ANo.3 | 失礼しました。データベースを動的に作成したいのでしたね(汗) 以下のサイトが参考になるかもしれません。英語のサイトですが。 ただ、SQLServer2005で使えるってことのようで、ExpressEditionでも使えるのかは不明です。 http://www.codeproject.com/KB/aspnet/Create_Database.aspx |
|---|---|
| 回答者:ape5 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/09 16:50 |
|
| |
| この回答へのお礼 | SQLDMOコンポーネントというものですね。 いろいろとツールを作る際には非常に便利そうです。 今回は#4さんの方法で対応できたのですが、今後必要となることもあるかもしれません。 ありがとうございました。 |
回答 |
|
| ANo.2 | 以下のリンク先を参考になさってはどうでしょうか。 現在は既存のデータベースにテーブルを作成しようとして、権限がないですよと蹴られているのだとおもうので、リンク先の方法で新しいデータベースを作成してそれにテーブルを作成するようにすれば権限が付与されるのかもしれません。 リンク先はASP.NETから使用するときの記事なのでうまくいくかもしれません。 http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_02/vs2005db_02_... |
|---|---|
| 回答者:ape5 | |
| 種類:アドバイス どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/09 09:07 |
|
| |
| この回答へのお礼 | ありがとうございます。でも違うんです。 ASP.NETから新規にデータベースを作成したいのです。 |
回答 |
|
| 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... |
|---|---|
| 回答者:ape5 | |
| 種類:回答 どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/05/02 16:15 |
|
| |
| この回答への補足 | お返事遅くなりまして申し訳ありません。情報ありがとうございます。 リンク先も見てみたのですが、当方の環境がExpressだからでしょうか、SQL Server Enterprise Managerなるものが存在しませんでした。他になにか設定する方法があればよいのですが・・。 とりあえず、コントロールパネルの「ユーザーとパスワード」より、ユーザーASPNETのグループをSQLServer2005MSSQLUser$XXXXX$SQLEXPRESSに変更して使用しておりますが、これでよいのでしょうか? |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |