2009-08-10 8 views
0

nicht öffnen Ich verwende Mitgliedschaftsklasse für meine Benutzerverwaltung, und es erstellte eine Datenbank namens ASPNETDB.MDF .. Ich entschied, die gleiche Datenbank zu verwenden, um meine anderen Daten zu behandeln, und so fügte ich hinzu einige meiner eigenen Tabellen in dort ...ASP.NET ASPNETDB.MDF Kann Datenbank

Wenn ich versuche, darauf zuzugreifen:

<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> 

mit dieser:

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

es mir diesen Fehler gibt, nachdem ich Membership-Klasse melden sie sich an durch :

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

Ich bin mir nicht sicher, was los ist?

Edit: Wenn ich Membership-Klasse nicht verwenden, kann ich die Datenbank in Ordnung verwenden .. aber wenn, nachdem ich die Mitgliedschaft Klasse Login, stoppt er zu arbeiten ..

Antwort

1

Stellen Sie sicher, dass My-Pc \ MyUser auf die entsprechenden Berechtigungen für die Datenbank "MyProject" zugreifen kann. Für die Testumgebung, in der meine lokalen Projekte ausgeführt werden, ordne ich mich normalerweise als Datenbankbesitzer der Datenbank zu, auf die ich zugreifen möchte. Das ist, wenn ich der einzige Benutzer bin, der darauf zugreift. Sie können dies tun, indem Sie EXEC sp_changedbowner 'My-Pc \ MyUser' ausführen. Offensichtlich möchten Sie ein separates Konto mit eingeschränktem Zugriff für Ihre Produktionsumgebung bereitstellen.

+0

Der Besitzer ist richtig eingestellt .. Es ist schon My-Pc/MyUser. Ich kann mich damit verbinden, wenn ich die Membership-Klasse nicht verwende, aber wenn ich das mache und mich anmelde, kann ich mich nicht mit ihr verbinden. – tpae

+1

Können Sie den Abschnitt "Erster Katalog" entfernen? Ich glaube nicht, dass Sie das brauchen, wenn Sie Benutzerinstanzen verwenden. –

+0

Gelöst! Ich habe den ersten Katalog entfernt und es funktioniert. Vielen Dank! – tpae

0

Sie werden wahrscheinlich brauchen, um Stellen Sie sicher, dass der Benutzer, auf dem der Webserver ausgeführt wird, Lese-/Schreibzugriff auf die Datenbankdatei und das Verzeichnis hat.

+0

der Benutzer hat Lese-/Schreibzugriff auf beide db Datei- und Verzeichnis ... Wenn ich nicht die Mitgliedschaft Klasse verwenden und versuchen, auf die Datenbank zuzugreifen, es funktioniert gut ... – tpae

+0

Wie sieht der Abschnitt Ihrer web.config aus? – chris

+0

Seltsamerweise habe ich keinen Abschnitt über die Mitgliedschaft .. Ich habe dies: tpae

0

Try "connString" von web.config und mit "LocalSqlServer" Verbindungszeichenfolge statt (es ist definiert in machine.config) Entfernen:

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

Wo finde ich die Datei machine.config? – tpae

+0

Auf meinem Rechner befindet es sich in 'C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG' –

0

ich auch auf dieses Problem gestoßen, und ich bemerkte, dass es funktioniert in der Tat funktioniert, wenn ich den Besitzer der Datenbank in 'My-Pc \ MyUser' geändert habe (über EXEC sp_changedbowner 'My-Pc \ MyUser'), wie oben angegeben.

Sie könnten auch versuchen, diese auf die Datenbank ausgeführt wird:

exec sp_grantlogin 'My-PC\MyUser2' 

Dies ist sicherlich nützlich, wenn Sie MyUser UND MyUser2 auf Ihre Datenbank zugreifen möchten mit. Ich begegnete diesem Szenario, wenn ich aspnet_regsql.exe mit MyUser2-Anmeldeinformationen ausführen muss (als Besitzer meiner Datenbank ist ASPNET, die nicht über Login/Runas-Funktionen verfügt).

Hoffnung hilft dieses jemand :)

Verwandte Themen