2012-02-28 8 views
-4

私はC#でASP.netを使用しています。 Webサーバー経由でSQL Serverデータベースにアクセスしたいアプリケーションを開発エリアから実行すると機能しますが、IISサーバーにアプリケーションをデプロイした後、次の例外が表示されます。データベースにIISにアクセスする方法は?

データベース 'master'でCREATE DATABASE権限が拒否されました。 ファイルD:\ newtest \ newtest.mdfの自動ネーム・データベースをアタッチしようとしましたが失敗しました。 同じ名前のデータベースが存在するか、または指定されたファイルを として開くことはできません。またはUNC共有上にあります。

私はIISを介してリモートSQL Serverデータベースにアクセスするにはどうすればよいのデータベース

Data Source = .\\SQLEXPRESS;AttachDbFileName=databasepath; Integrated Security=true 

との接続に次の接続文字列を使用していますか?

答えて

0

はねえ、あなたの設定ファイル

connectionString="Data Source=Abcl\SQLEXPRESS;Initial Catalog=master;User ID=sa;Password=pwd12" providerName="System.Data.SqlClient" 

あなたはサンジャイによって答えが正しいですが、PLSのは、この

connectionString="AttachDbFilename='C:\Documents and Settings\nmartin\My Documents\PS_Upload\TimeTrack\src\TimeTracker\TimeTrack\App_Data\ASPNETDB.MDF';Integrated Security=True; User Instance=True" 
+0

私のアプリケーションでは固定データベースファイルはありません、私はいつも私のデータベースを変更する、私はプロジェクトフォルダ内のファイルを渡す、このファイルからデータベースパスを読み取る方法web.configでデータベースパスを渡す方法と私はこの接続を使用していますASP.netでユーザーIDなしでデータベースにアクセスする方法を教えてください – user847455

+0

あなたの要件に基づいて私の答えを更新しました... pls check –

+0

「sa」は悪い例です。 –

0

ように使用MDF などのDBファイルを使用している場合、SQLサーバーとの資格を作成し、更新しますそれは本当に説明していないなぜあなたは許可が拒否されています。

ASP.NET/IISで動作するコードは、ワーカープロセスの設定で無視される特定のユーザーとして実行されます。 IIS 6 [Server 2003](以下、私は思う)の既定値はNETWORK SERVICE、IIS 7+ [Server 2008]の場合、デフォルトの動作は特別なアプリケーションプールユーザーIISAPPPOOL\yourAppPoolNameとして実行されます。

正しいユーザーアカウントのデータベースに必要なアクセス許可を与えると、エラーを回避しても統合セキュリティを使用できるはずです。

一般的に、最も制限の厳しい(ただし操作可能な)権限セットをデータベースに与えることをお勧めします。 CREATE DATABASEはかなり高い権限レベルを必要とします(私は頭が何であるか覚えていません)。IISアプリケーションにその権限を付与すると、貴重な人物がデータベースシステムを制御できなくなる可能性が高くなります。その上に大混乱を引き起こす。

0

キーは、接続文字列にIntegrated Security=Trueを使用したことです。

開発環境でプロジェクトを実行すると、Webアプリケーションは通常、ローカルユーザーアカウントとして実行されます。さらに、あなたのアカウントは通常、ローカルSQLインスタンス上の特権ユーザー(admin)です。

通常、IISはローカルマシンアカウント(またはAppPool用にプロビジョニングされたアカウント)として実行されます。そのアカウントには、通常、SQL Serverインスタンスに対する特別な特権はありません。

debraceyが指摘しているように、通常、あなたのアプリケーションのSQL権限を(あなたの側に正直な間違いであっても)害を及ぼすほど高くしたくありません。tihsを回避する1つの一般的なパターンは、あなたのアプリケーションのための2つの別々のSQLアカウントを持っていることです。

  1. アクセスするための(例えばdb_ownerの役割)
  2. 限られた特権アカウントを作成し、データベースのschmeaを修正するための高特権のアカウントあなたのアプリケーションが実行されている間データベース(例えば、db_datareaderおよび/またはdb_datawriterロール)
関連する問題