3

SQL Server データベースを使用する ASP クラシックで作成されたサイトの保守を依頼されました。

データベースはバックアップの形で提供されました。ローカル コンピューターにデータベースを復元し、それに を作成しDSN connectionました。ただし、サイトを読み込もうとするとstored procedures、サイトが依存しており、実行権限が拒否されたというエラーが表示されます。

問題のストアド プロシージャには、権限を持つUserSecure唯一の人物として表示されているという名前のユーザーがいます。その名前でユーザーを作成しようとしましたが、Web から接続しようとしてEXECUTESQL Server Management Studio に手動でログインできますが、機能しません。UserSecureそれらの資格情報を使用するページは、login failed error.

Windows 資格情報を実行するsp_helploginsと、データベースの所有者として表示され、実際には SSMS 内から実行できますが、ADO 接続からは実行できません。

別のメモとして、 の接続は次のwebpageようにコーディングされています。接続のアプリケーション部分については詳しくありません。おそらくこれは問題の一部ですか?DSNおよび接続で接続しようとしましたが、DSN-less接続できますが、データベースで何もできませんか?

4

4 に答える 4

3

You should make sure the database server login is mapped to the appropriate database user (this problem crops up often when dealing with database backups). If it is not, then you need to fix the mapping. Fortunately, there is a command called sp_change_users_login that you can use to fix this problem.

First, check if your login is mapped to your database user. Using SQL Server Management Studio (assuming SQL Server 2008), look under Security/Logins for UserSecure. If you see it in the list, double click on it and select User Mapping. From there, locate the database you are trying to connect to, and see if UserSecure is mapped to that database. If it is not, you may be able to fix it using the following command (assuming UserSecure is the name of both the login and the user):

EXEC sp_change_users_login AUTO_FIX, UserSecure

See MSDN for more info on sp_change_users_login:
http://msdn.microsoft.com/en-us/library/ms174378.aspx

于 2013-01-10T18:41:06.880 に答える
0

問題をよく知っている、

ユーザー(名前)のIDは、バックアップされたデータベースと復元されたデータベースで異なります。MSSQLは、ユーザー名(テキスト)ではなくユーザーのIDを格納するため、IDはマシンおよびバックアップごとに異なります(99%の時間)。したがって、IDが一致しない場合は、アクセスできません。

ユーザーを削除して再作成するだけです。必ず両方の場所で実行してください。

最初にデータベースからユーザーを削除します。

データベース->セキュリティ->ユーザー->右クリック(ユーザー名)+削除

次にgoto

セキュリティ->ログイン->右クリック(ユーザー名)+削除

次に、ユーザーを再作成し、アカウントに適切な権限を付与します。これで問題ありません。

于 2013-01-28T08:19:53.837 に答える
0

私を数回噛んだ1つの問題:

ストアド プロシージャ (またはビュー) がユーザーからのアクセス許可を必要とuserAし (たとえばviewB、選択/実行/などの権限をviewB付与します。userAon (これには、のデータベースのviewBユーザーが必要です)viewB

したがって、あなたの場合、UserSecure復元したデータベースが参照する既存のデータベースのストアド プロシージャに対する実行権限を明示的に付与する必要がある場合があります。

于 2013-01-10T18:26:35.557 に答える
0

これは最もエレガントな修正ではないかもしれませんが、1 つの手順に集中するのをやめ、代わりに DB 全体でゲスト ユーザーに実行権限を付与しました。これは私の個人用マシンでのみ実行されているため、セキュリティは問題ではなく、問題が修正されたようです.

于 2013-01-11T14:49:32.973 に答える