2009-08-10 3 views
0

사용자 관리에 멤버십 클래스를 사용하고 있으며 ASPNETDB.MDF라는 데이터베이스를 만들었습니다. 동일한 데이터베이스를 사용하여 다른 데이터를 처리하기로 결정했습니다. 거기에 내 자신의 일부 테이블 ...ASP.NET ASPNETDB.MDF 데이터베이스를 열 수 없습니다.

내가 그것을 액세스하려고 :

<connectionStrings> 
    <add name="connString" connectionString="Initial Catalog=MyProject;Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\MyName\Documents\Visual Studio 2008\Projects\Project\MyProject\App_Data\ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

를이 사용 :

Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("connString").ToString) 

그것은 나에게 오류를 제공합니다 내가 회원 클래스를 통해 로그인 한 후 :

Cannot open database "MyProject" requested by the login. The login failed. 
Login failed for user 'My-PC\Myuser'. 

나는 무슨 일이 일어나고 있는지 잘 모르겠다.

편집 : 내가 회원 클래스를 사용하지 않는 경우에, 나는 데이터베이스 벌금을 사용할 수 있습니다 ..하지만 난 회원 클래스를 사용하여 로그인 후 때, 작동을 중지합니다 ..

답변

1

My-Pc \ MyUser가 'MyProject'데이터베이스에 대한 적절한 사용 권한을 가지고 있는지 확인하십시오. 내 로컬 프로젝트가 실행되는 테스트 환경의 경우 일반적으로 액세스하려는 데이터베이스 소유자에게 자신을 데이터베이스 소유자로 할당합니다. 그게 내가 액세스하는 유일한 사용자입니다. EXEC sp_changedbowner 'My-Pc \ MyUser'를 실행하면됩니다. 분명히 프로덕션 환경에 대한 제한된 액세스 권한을 가진 별도의 계정을 할당하려고합니다.

+0

소유자가 올바르게 설정되었습니다. .. 이미 My-Pc/MyUser입니다. Membership 클래스를 사용하지 않으면 연결할 수 있습니다.하지만 로그인하고 로그인하면 연결할 수 없습니다. – tpae

+1

'초기 카탈로그'섹션을 삭제할 수 있습니까? 나는 당신이 사용자 인스턴스를 사용한다면 그것이 필요하다고 생각하지 않는다. –

+0

해결되었습니다! 초기 카탈로그를 제거하고 작동합니다. 고맙습니다! – tpae

0

당신은 아마 확인해야합니다 웹 서버가 실행중인 사용자가 db 파일 및 디렉토리에 대한 읽기/쓰기 권한을 가지고 있는지 확인하십시오.

+0

사용자가 읽기/쓰기 액세스를하는 데 도움이 ... – tpae

+0

web.config의 섹션의 모양은 무엇입니까? – chris

+0

이상하게도 회원 자격에 관한 섹션이 없습니다. tpae

0

의 Web.config에서 "connString"를 제거하고 (이이 Machine.config에 정의되어있다) 대신에 "LocalSqlServer"연결 문자열을 사용하십시오 :

Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString) 
+0

어디에서 machine.config 파일을 찾을 수 있습니까? – tpae

+0

제 컴퓨터에서'C : \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG'에 있습니다. –

0

을 나는 또한이 문제가있어서, 나는 그것이 않는 것으로 나타났습니다 실제로 데이터베이스의 소유자를 위의 지적한대로 EXEC sp_changedbowner 'My-Pc \ MyUser'을 통해 'My-Pc \ MyUser'로 변경했다면 작동합니다.

당신은 또한 당신의 데이터베이스에서이 실행 시도 할 수 있습니다 : 당신이 참고 MyUser 및 MyUser2이 데이터베이스에 대한 액세스 권한을 가진하려는 경우

exec sp_grantlogin 'My-PC\MyUser2' 

이 확실히 유용합니다. aspnet_regsql.exe MyUser2 자격 증명 (내 데이터베이스의 소유자는 login/runas 기능이없는 ASPNET이므로)을 실행해야 할 때이 시나리오가 발생했습니다. 내가 회원 클래스를 사용하여 데이터베이스에 액세스하려고하지 않는 경우

희망이 잘 작동, ... DB 파일 및 디렉토리 모두 사람 :

관련 문제