2011-01-10 26 views
1

xp_regread(データベースパスの検索を試みる)に「アクセスが拒否されました」というクライアントがありますが、これを再現できないようです。私は以下を実行しようとしましたSQL Server xp_regreadアクセスが拒否されました

REVOKE execute on xp_regread to public 

それでも動作します。私はSQL Server 2000の問題(http://support.microsoft.com/kb/887165)にいくつかの記事も見つけましたが、クライアントサーバーは2005年です。この問題を解決する方法についてのアイデア。

編集:私は、次の

USE MASTER 
GO 

REVOKE execute on xp_regread to public 
GO 

DECLARE @InstanceName nvarchar(128) 
SET @InstanceName = ISNULL(CONVERT(nvarchar(128), SERVERPROPERTY('InstanceName')), N'MSSQLSERVER') 
DECLARE @InstanceKey nvarchar(128) 
EXECUTE master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL\', @InstanceName, @InstanceKey OUTPUT 

print @InstanceName 
print @InstanceKey 

を試してみました。しかし、それはまだ働いています。明確にするために、私は通話がうまくいかないところで問題を再現しようとしています。パーミッションを取り消すことは私が読んでおくべき1つの方法でしたが、それはまだ私のために働きます。

+0

問題は何ですか?あなたはそれを実行したい、またはしたくないですか?あなたはREVOKEを持っているので私は尋ねます – gbn

+0

私はそれが動くことができるようにしたい。ユーザーが「アクセスが拒否されました」という問題に遭遇していますが、その理由を再現するために問題を再現しようとしています。 – Kyle

答えて

2

それはとても次に

EXEC master..xp_regread ... 

を必要とする拡張ストアドプロシージャの明示的なREVOKEは、それを削除します、次に設定されている拒否した場合、それは

USE master 
GO 
GRANT EXECUTE ON xp_regread TO public 
GO 

だろう。これはGRANTと同じではありません。これは、通常のユーザーにのみ適用されます。

GRANT DENY ON xp_regread TO XYuser. 

するしかし注意してください、それは後に問題が発生することがあります:とにかく

+0

編集:投稿を編集しました。コメントはあまりにも美しく見えませんでした。 – Kyle

1

明示的DENY許可がなければならないシステム管理者の権限またはdb_ownerのマスターで(SAがマスターにdboにされる)意志のバイパス権限を持つ

誰でも。 SSMSのバックアップダイアログのように、その人のために動作しません。

0

問題を再現するには、まず2つの異なるエラー、つまり「アクセスが拒否されました」を差し替える必要があります。 「EXECUTE権限が拒否されました」。

最初のエラーは、sysadmin以外のユーザーに比べて設定上の問題が原因です。 2番目の問題は、拡張プロシージャに対する実行権限が不足しているためです。

両方の場合は、投稿に従ってくださいHow to configure permissions for xp_regread

関連する問題