2012-02-28 5 views
-4

C#으로 ASP.net을 사용했습니다. 웹 서버를 통해 SQL Server 데이터베이스에 액세스하려고합니다. 개발 영역에서 내 응용 프로그램을 실행할 때 작동하지만 IIS 서버에 응용 프로그램을 배포 한 후 다음 예외가 표시됩니다.IIS를 통해 데이터베이스에 원격으로 액세스하는 방법은 무엇입니까?

데이터베이스 'master'에서 CREATE DATABASE 권한이 거부되었습니다. 파일 D : \ newtest \ newtest.mdf에 대해 자동 이름이 지정된 데이터베이스를 연결하지 못했습니다. 같은 이름의 데이터베이스가 있거나 지정된 파일을 으로 열 수 없거나 UNC 공유에 있습니다.

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

어떻게 IIS를 통해 원격으로 SQL Server 데이터베이스에 액세스 할 데이터베이스와 연결에

나는 다음과 같은 연결 문자열을 사용했다?

답변

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에서 매번 데이터베이스 경로를 전달하는 방법 &이 연결을 사용했습니다. s 클래스 파일 및 ASP.net에서 사용자 ID없이 데이터베이스에 액세스하는 방법 – user847455

+0

이봐, 귀하의 요구 사항에 대한 기초로서 내 대답을 업데이 트했습니다 ... pls 체크 –

+0

나는 'sa'는 나쁜 예제를 제안해야합니다. –

0

처럼 사용 MDF 같은 DB 파일을 사용하는 경우 SQL 서버 자격 증명을 만들고 업데이트 그것은 실제로 설명하지 않습니다 당신은 허가가 거부되었습니다.

ASP.NET/IIS에서 실행되는 코드는 특정 사용자로 실행되며 작업자 프로세스의 구성에서 무시됩니다. IIS 6 [Server 2003] (및 그 이하)에서 기본값은 IIS 7+ [Server 2008]의 경우 NETWORK SERVICE이고 기본 동작은 특수 응용 프로그램 풀 사용자 IISAPPPOOL\yourAppPoolName으로 실행되는 것입니다.

데이터베이스에 올바른 사용자 계정의 사용 권한을 부여한 경우 오류가 발생하지 않고 통합 보안을 사용할 수 있어야합니다.

일반적으로 데이터베이스에서 가장 제한적인 (그래도 작동 가능한) 권한 집합을 지정하는 것이 좋습니다. CREATE DATABASE 꽤 높은 권한 수준이 필요합니다. (나는 머리 부분이 무엇인지 기억하지 못합니다.) IIS 응용 프로그램에 권한을 부여하면 명예가 낮은 사용자가 데이터베이스 시스템을 제어 할 수있는 상당한 위험이 있습니다. 그것에 wreaking 혼란.

0

가장 중요한 점은 연결 문자열에 Integrated Security=True을 사용했음을 의미합니다.

개발 환경에서 프로젝트를 실행하면 웹 응용 프로그램은 일반적으로 로컬 사용자 계정으로 실행됩니다. 또한 사용자의 계정은 보통 로컬 SQL 인스턴스의 권한있는 사용자 (admin)입니다.

배포 서버에서 IIS는 일반적으로 로컬 컴퓨터 계정 (또는 AppPool에 대해 프로 비전 된 계정)으로 실행됩니다. 이 계정에는 대개 SQL Server 인스턴스에 대한 특별한 권한이 없습니다.

debracey가 지적했듯이 일반적으로 응용 프로그램의 SQL 권한이 사용자의 실수를 저 지르더라도 해를 끼칠만큼 충분히 높이는 것은 원하지 않습니다.tihs을 피하기 위해 하나 개의 일반적인 패턴은 앱이 개 별도의 SQL 계정을 가지고하는 것입니다

  1. 액세스 (예 : 대한 db_owner 역할)
  2. 제한된 권한 계정을 생성하고 데이터베이스 schmea를 수정하기위한 높은 혜택받지 계정 데이터베이스 동안 앱 실행 (예에서 db_datareader 및/또는 db_datawriter에 역할) 내 응용 프로그램에서
관련 문제