sa、dbo、エンティティ所有者、information_schema、sys、または自分へのアクセス許可を付与、拒否、または取り消すことはできません


8

次のエラーが発生しました:

Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself.

これらのコマンドを試していたとき

USE ASPState
GO

GRANT EXECUTE ON CreateTempTables TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON DeleteExpiredSessions TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetMajorVersion TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON GetHashCode TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetAppID TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem2 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItem3 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive2 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetStateItemExclusive3 TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempGetVersion TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertStateItemLong TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertStateItemShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempInsertUninitializedItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempReleaseStateItemExclusive TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempRemoveStateItem TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempResetTimeout TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemLong TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemLongNullShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemShort TO [R2Server\AAOUser]
GO
GRANT EXECUTE ON TempUpdateStateItemShortNullLong TO [R2Server\AAOUser]
GO

それで、私のアカウントR2Server\AAOUserがデータベースに対してどのような種類の権限を持っているかをどのように知ることができますASPStateか?そして、エラーを解決する方法は何ですか(自分のアカウントにこれらのアクセス許可を付与できるようにするため)?


サーバーのユーザーはsysadminですか?またはそのdbのdb所有者?
マリアン

実際にはありません。(私のユーザーアカウントは、sysadminnorではありませんdb owner。)
ジャック

db ownerはMicrosoft SQL Server Management Studioを使用していることがわかりました。したがって、私はASPStateデータベースの所有者なので、自分に権限を与える必要はないと結論付けることができます。正しい?
ジャック

あなたが正しい。あなたがデータベース所有者であれば、他のデータベース権限は必要ありません。
マリアン

@Marianに感謝します。おそらく答えを入れて、sqlcmdに入力するコマンドを含めて、彼がデータベースに対してどのような権限を持っているかを確認したいと思います。
ジャック

回答:


7

コメントのとおり、あなたがすでにそのデータベースのdb所有者である場合は、dbに対する権限を付与する必要はありません。

ここで、自分が持っている特定の権限を確認するために、次のクエリを使用できます。

  • 特定のデータベースの権限を見つけます:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
  • すべてのサーバーのアクセス許可を検索します。

    SELECT * FROM fn_my_permissions(NULL, 'SERVER');
    GO

その他の情報については、MSDNフォーラムのSQL Serverログインと関連するサーバーロールをご覧ください。


1
SQLについてあまり知らない場合はAdventureWorks2008R2、独自のデータベース名に置き換える必要があります。fn_my_permissions一部には、すべてのデータベースで同じです。
SaiyanGirl 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.