0

ユーザー管理にメンバーシップ クラスを使用しており、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'.

何が起こっているのかわかりませんか?

編集:メンバーシップクラスを使用しない場合、データベースを使用できます..しかし、メンバーシップクラスを使用してログインした後、動作しなくなります..

4

4 に答える 4

1

My-Pc\MyUser が「MyProject」データベースへの適切なアクセス許可を持っていることを確認してください。私のローカル プロジェクトが実行されるテスト環境では、通常、アクセスしたいデータベースのデータベース所有者として自分自身を割り当てます。それは、私がそれにアクセスしている唯一のユーザーである場合です。これを行うには、EXEC sp_changedbowner 'My-Pc\MyUser' を実行します。明らかに、本番環境用にアクセスが制限された別のアカウントを専用にする必要があります。

于 2009-08-10T02:00:16.627 に答える
0

web.config から "connString" を削除し、代わりに "LocalSqlServer" 接続文字列を使用してみてください (これは machine.config で定義されています)。

Dim conn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ToString)
于 2009-08-10T02:05:48.850 に答える
0

おそらく、Web サーバーを実行しているユーザーが db ファイルとディレクトリへの読み取り/書き込みアクセス権を持っていることを確認する必要があります。

于 2009-08-10T01:42:39.363 に答える
0

私もこの問題に遭遇し、上記で指摘したように、 ( EXEC sp_changedbowner 'My-Pc\MyUser'を介して) データベースの所有者を 'My-Pc\MyUser' に変更すると、実際に機能することに気付きました。

データベースでこれを実行することもできます。

exec sp_grantlogin 'My-PC\MyUser2'

これは、MyUser と MyUser2 がデータベースにアクセスできるようにする場合に便利です。MyUser2 資格情報を使用してaspnet_regsql.exeを実行する必要があるときに、このシナリオに遭遇しました (データベースの所有者が ASPNET であり、ログイン/runas 機能がないため)。

これが誰かを助けることを願っています:)

于 2009-10-08T20:17:55.100 に答える