C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: ASP.NET CREATE DATABASE エラー


(過去ログ 140 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■82119 / inTopicNo.1)  ASP.NET CREATE DATABASE エラー
  
□投稿者/ Miki (1回)-(2016/12/13(Tue) 03:58:17)

分類:[ASP.NET (C#)] 

ASP.NET MVC Ver.5 プロジェクトのDBアクセスするページを開くと「CREATE DATABASE 権限がデータベース 'master' で拒否されました」エラー発生

○開発PC(PC1)の構成

・Windows7 Home Premium (64bit)
・Visual Studio 2016 Express (ASP.NET MVC Ver.5 C#で開発)

○テストサーバPC(PC2)の構成

・Windows7 Home Premium (32bit)
・SQLServer 2014 Express (32bit)
・IIS 7.5
・.NET Framework 4.6.2

開発用PC(PC1)にて、Visual Studio 2016で作成したASP.NET(MVC Ver.5)のプロジェクトをファイルシステムで発行して、
IISがインストールされているテストサーバPC(PC2)にコピーして設定を行い、
DBアクセスしないページはブラウザで開けるようになりましたが、
DBアクセスするページを開くと「CREATE DATABASE 権限がデータベース 'master' で拒否されました。」とエラー表示されてしまいました。
メッセージの内容は以下のとおりです。
初回のデータベース作成処理でエラーが発生しているようです。(開発環境ではエラーは発生しません)

(開いたURL) http://192.168.51.201/workers

> '/' アプリケーションでサーバー エラーが発生しました。
> CREATE DATABASE 権限がデータベース 'master' で拒否されました。
> 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。
>
> 例外の詳細: System.Data.SqlClient.SqlException: CREATE DATABASE 権限がデータベース 'master' で拒否されました。

web.configファイルの接続文字列は以下のようになっています。(SQL認証しようとしています)

> <connectionStrings>
> <add name="ZaikoContext"
> connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=zaiko;User ID=dbuser;Password=xxxxx;"
> providerName="System.Data.SqlClient"/>
> </connectionStrings>

PC2上でSQLServer ManagementStudioを起動してユーザー「dbuser」でログインすると正常にログインできてデータベース作成もできます。

「dbuser」のサーバロールは、dbcreatorを含めリスト上に表示されたすべてにチェックをいれています。
ユーザーマッピングも、master, model, msdb, tempdbのマップカラムにチェックを入れています。
セキュリティ保護可能なリソースもすべてチェックしています。

原因が分からなくて数日ハマっていますので、確認すべき箇所などありましたご教授お願いいたします。


引用返信 編集キー/
■82121 / inTopicNo.2)  Re[1]: ASP.NET CREATE DATABASE エラー
□投稿者/ WebSurfer (1092回)-(2016/12/13(Tue) 10:21:31)
No82119 (Miki さん) に返信

ASP.NET, SQL Server の認証方式は何か、偽装などの特別なことをしているか、開発マシン
の Web サーバーは何か(ASP.NET 開発サーバー? IIS Express? ローカル IIS?)、SQL
Server は物理的にどこにインストールされているのか(Web サーバーと同じ PC or 別マシ
ン)等の情報がないのでひょっとしたらハズレかもしれませんが・・・

開発マシンで動いて運用環境で動かないという原因はだいたいワーカープロセスのアクセス
権の誓いにあります。

たとえば、開発マシンに管理者権限でログインし、Visual Studio をその管理者権限で立ち
上げて、IIS Express で Web アプリを動かす場合、ワーカープロセスのアクセス権はその
管理者権限になります。

一方、運用環境で IIS を用いて Web アプリを動かした場合、IIS7.5 ではデフォルトでア
プリケーションプール ID となります。詳しくは以下のページを見てください。

IIS 7.0 での組み込みユーザーとグループ アカウントとは
https://technet.microsoft.com/ja-jp/library/dd939094.aspx

アプリケーション プール ID
https://technet.microsoft.com/ja-jp/library/ee886292.aspx

ということで、開発マシンでは管理者権限で SQL Server にアクセスに行くので問題ないが、
テストサーバーでは権限のないアプリケーションプール ID でアクセスに行くにので失敗する
ということと想像しています。

どのようにすればいいかは、その想像が当たっているかと、このレスの一番上に書いた情報に
よりますので、それを連絡ください。

引用返信 編集キー/
■82122 / inTopicNo.3)  Re[1]: ASP.NET CREATE DATABASE エラー
□投稿者/ WebSurfer (1093回)-(2016/12/13(Tue) 10:30:59)
No82119 (Miki さん) に返信

今頃気がついて何ですが、開発マシンと運用マシンで SQL Server のバージョンが
違うのですね。開発マシンの SQL Server の方が新しいので、開発マシンで作った
ファイルを運用マシンにそのままコピーしても動かないと思うのですが、そのあた
りは対応されていると思っていいのですよね?
引用返信 編集キー/
■82123 / inTopicNo.4)  Re[1]: ASP.NET CREATE DATABASE エラー
□投稿者/ WebSurfer (1094回)-(2016/12/13(Tue) 10:42:52)
No82119 (Miki さん) に返信

たびたびすみません。

ひょっとして、開発マシンでは EF Code First の機能を利用して SQL Sever Express
に DB を作っていて、それと同じことを運用マシンでやろうとしていますか?
引用返信 編集キー/
■82131 / inTopicNo.5)  Re[2]: ASP.NET CREATE DATABASE エラー
□投稿者/ Miki (2回)-(2016/12/13(Tue) 13:16:59)
お返事ありがとうございます!

情報不足ですいません。
開発PCではIISやSQLServerは使用しておらず、Visual Studioのデバッグ実行で動作確認しています。
2台とも、Windowsの管理者権限をつけているユーザーでログインしています。

今回初めてASP.NETを使用した初心者で、開発から発行まで一通りの作業を
とりあえずやってみようと思って作業していました。
作成したプログラムは、確認用に作成したシンプルなもので、
MVCの新規プロジェクトにScaffolding機能で作成したCRUDなページを1つ追加しただけです。
DBのテーブルも1つだけです。

テストサーバは、すぐに使えるPCが32ビットWindowsしか無かったので、とりあえずこれでやってみようという感じです。
難しそうならバージョンを合わせる対応は可能です。

アプリケーションプールIDにも権限があるのは認識していませんでした。
この辺に原因がありそうな気がしますので、教えていただいたページを読んでみます。

SQLServerのバージョン違いの対応は特にしておりませんでした。
ASP.NETの初回実行でデータベース作成コマンドが実行されると思うので、
この辺は特に考慮しなくてもいいのかなと思っておりましたが、
なにか対応が必要でしたらご指摘いただけるとありがたいです。


引用返信 編集キー/
■82137 / inTopicNo.6)  Re[3]: ASP.NET CREATE DATABASE エラー
□投稿者/ WebSurfer (1095回)-(2016/12/13(Tue) 15:35:35)
No82131 (Miki さん) に返信

> 開発PCではIISやSQLServerは使用しておらず、Visual Studioのデバッグ実行で動作確認しています。
> 2台とも、Windowsの管理者権限をつけているユーザーでログインしています。

開発 PC では SQL Server は LocalDB を利用、Web アプリは IIS Express 上で動かしていて、ワー
カープロセスはその管理者権限を持っているという理解で良いでしょうか?

そして、開発 PC では、EF Code First の機能を利用して LocalDB に DB が自動的に作成されてい
るという理解で良いでしょうか?

とすると、テストサーバ PC では、EF Code First の機能を利用して SQL Server 2014 Express に
DB を作成できないことが原因(の一つ?)ではないかと思います。

SQL Server 認証で、ID=dbuser;Password=xxxxx とした dbuser にその権限を与えれば Code First
で DB を作るということが可能かどうかは自分は分かりません。(開発環境の .mdf ファイルを運用
環境にコピーするとか、開発環境で DB を作成するスクリプト作ってそれを運用環境で走らせるとい
うようなことしか自分はしたことがないです)

が、一度、接続文字列(Integrated Security=SSPI は Windows 認証)を直して試してみてはいかが
でしょう?

引用返信 編集キー/
■82149 / inTopicNo.7)  Re[4]: ASP.NET CREATE DATABASE エラー
□投稿者/ Miki (4回)-(2016/12/13(Tue) 18:18:05)
No82137 (WebSurfer さん) に返信

> 開発 PC では SQL Server は LocalDB を利用、Web アプリは IIS Express 上で動かしていて、ワー
> カープロセスはその管理者権限を持っているという理解で良いでしょうか?
> そして、開発 PC では、EF Code First の機能を利用して LocalDB に DB が自動的に作成されてい
> るという理解で良いでしょうか?

はい、ワーカープロセス等はまだきちんと理解できておりませんが、この通りだと思います。

> 一度、接続文字列(Integrated Security=SSPI は Windows 認証)を直して試してみてはいかが
> でしょう?

調べなおして、下記のように接続文字列を修正してみました。

> <connectionStrings>
> <add name="ZaikoContext"
> connectionString="server=.\SQLEXPRESS;database=zaiko;uid=dbuser;pwd=xxxxx;"
> providerName="System.Data.SqlClient"/>
> </connectionStrings>

これで前のエラーは表示されなくなりましたが、今度は下記のエラーが発生するようになりました。

> '/' アプリケーションでサーバー エラーが発生しました。
>
> ユーザー 'dbuser' はログインできませんでした。
> 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。
>
> 例外の詳細: System.Data.SqlClient.SqlException: ユーザー 'dbuser' はログインできませんでした。

ユーザーをsaにしても同様でした。
server=の指定値を存在しない名前に変更してみたら別のエラーメッセージ(SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。)が出たので、サーバは認識されているようです。
database=やpwd=は変更しても「ユーザー 'dbuser' はログインできませんでした。 」と表示されました。

引き続き調べてみます。
あとWindows認証ではどうかもやってみようと思います。


引用返信 編集キー/
■82154 / inTopicNo.8)  Re[5]: ASP.NET CREATE DATABASE エラー
□投稿者/ WebSurfer (1096回)-(2016/12/13(Tue) 19:43:03)
No82149 (Miki さん) に返信

とりあえず運用環境で EF Code First で DB を生成するということは一旦止めて(Web アプリ
に DB を Drop したり Create できるほどの権限を与えるのはやりすぎで、普通はそういうこ
とはしないと思うのですが・・・)、SSMS などを使って DB を作成し、それにアクセスして
単純にデータを取得するようなアプリを作ってみてはいかがですか?

EF Code First での DB 生成が絡んで今回のような問題が起こっているのか、単純に SQL Server
のログインの設定の問題なのかが分かると思いますので。

引用返信 編集キー/
■82155 / inTopicNo.9)  Re[6]: ASP.NET CREATE DATABASE エラー
□投稿者/ Jitta (236回)-(2016/12/13(Tue) 19:45:07)
masterデータベースって、使っていいの?
システムの重要なデータがあるところですよね?
引用返信 編集キー/
■82156 / inTopicNo.10)  Re[7]: ASP.NET CREATE DATABASE エラー
□投稿者/ WebSurfer (1097回)-(2016/12/13(Tue) 19:58:18)
No82155 (Jitta さん) に返信

データベースの作成
https://msdn.microsoft.com/ja-jp/library/ms186312.aspx

"master データベースの CREATE DATABASE 権限か、CREATE ANY DATABASE 権限または
ALTER ANY DATABASE 権限が必要です"
引用返信 編集キー/
■82158 / inTopicNo.11)  Re[6]: ASP.NET CREATE DATABASE エラー
□投稿者/ Miki (5回)-(2016/12/13(Tue) 22:47:08)
No82154 (WebSurfer さん) に返信

> とりあえず運用環境で EF Code First で DB を生成するということは一旦止めて(Web アプリ
> に DB を Drop したり Create できるほどの権限を与えるのはやりすぎで、普通はそういうこ
> とはしないと思うのですが・・・)、SSMS などを使って DB を作成し、それにアクセスして
> 単純にデータを取得するようなアプリを作ってみてはいかがですか?

ASP.NETでのDB作成はEF Code Firstで行うものなのかなと考えてましたが、
たしかに権限を与えすぎな感じですね。

EF Code FirstでのDB作成は開発レベルにとどめて、
本番環境ではSSMSで作業するようにしたいと思います。

発行後からサーバへのリリースの作業については、
手元の参考書(「ASP.NET MVC 5 実践プログラミング」など)や
ネットを見てもいい情報が得られなかったので、いろいろ教えていただき大変参考になりました。
ありがとうございました。

本件はこれでクローズしたいと思います。
また行き詰ったら利用させていただきます。

解決済み
引用返信 編集キー/
■82172 / inTopicNo.12)  Re[8]: ASP.NET CREATE DATABASE エラー
□投稿者/ Jitta (237回)-(2016/12/14(Wed) 15:37:40)
No82156 (WebSurfer さん) に返信
> ■No82155 (Jitta さん) に返信
>
> データベースの作成
> https://msdn.microsoft.com/ja-jp/library/ms186312.aspx
>
> "master データベースの CREATE DATABASE 権限か、CREATE ANY DATABASE 権限または
> ALTER ANY DATABASE 権限が必要です"

そういう話じゃないんだけなぁ。
DBから離れて長いし、触ってたのもORACLEなので詳しくありませんが、
SQL Server の「システムデータベース」って、
一般ユーザーに使わせていいの?
アプリケーションデータを格納するためのデータベースを用意して、
不慮の事故でもシステムデータの流出をできるだけ避けるのではないの?
できる/できないの話じゃなくて、いいか/悪いかの話のつもりだったんだけど、まぁ、いいや。
解決済み
引用返信 編集キー/
■82180 / inTopicNo.13)  Re[9]: ASP.NET CREATE DATABASE エラー
□投稿者/ WebSurfer (1098回)-(2016/12/14(Wed) 18:50:07)
No82172 (Jitta さん) に返信

最初からきちんと読めば質問者さんが意図して master をなんちゃらしようとしているのでは
ないことは分かるはずです。

> そういう話じゃないんだけなぁ。

と言う前に、よく読んでいただければと。読んでも分からなければ、その旨言ってください。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -