ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?
スポンサーサイト(詳細
  • Java個別指導IT-Lab. - 誰でも最初は未経験。個別指導でプロへの道が開けます。随時入校可能

質問

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に変更して使用しておりますが、これでよいのでしょうか?
この回答へのお礼この回答にお礼をつける(質問者のみ)
スポンサーサイト(詳細
  • Java個別指導IT-Lab. - 誰でも最初は未経験。個別指導でプロへの道が開けます。随時入校可能