Tidak dapat memberikan, menolak, atau mencabut izin untuk sa, dbo, pemilik entitas, information_schema, sys, atau diri Anda sendiri

8

Saya menemukan kesalahan berikut:

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

ketika saya mencoba perintah ini

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

Jadi, bagaimana saya tahu jenis izin apa yang dimiliki akun saya R2Server\AAOUseruntuk database ASPState? dan apa cara untuk mengatasi kesalahan (sehingga saya dapat memberikan izin ini ke akun saya)?

Mendongkrak
sumber
Apakah sysadmin pengguna Anda di server? Atau pemilik db pada db itu?
Marian
Sebenarnya tidak ada. (Akun pengguna saya bukan sysadminatau bukan db owner.)
Jack
Saya rasa saya mengetahui bahwa saya db ownermenggunakan Microsoft SQL Server Management Studio. Jadi, saya dapat menyimpulkan bahwa saya tidak perlu memberikan izin apa pun kepada diri saya karena saya adalah pemilik ASPStatebasis data. Baik?
Jack
Kamu benar. Jika Anda pemilik db, Anda tidak memerlukan izin basis data lainnya.
Marian
@ Terima kasih Marian, mungkin Anda ingin memberikan jawaban Anda dan memasukkan perintah apa yang harus diketikkan ke dalam sqlcmd sehingga orang tahu izin apa yang ia miliki di database.
Jack

Jawaban:

7

Sesuai komentar, jika Anda sudah menjadi pemilik db dari database itu, daripada Anda tidak perlu memberikan izin apa pun untuk db.

Sekarang, untuk mengetahui izin spesifik apa yang Anda miliki, Anda dapat menggunakan pertanyaan berikut:

  • temukan izin pada db tertentu:

    USE AdventureWorks2008R2;
    SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
    GO
  • temukan izin di semua server:

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

Lihat beberapa info lain di sini: Temukan Login SQL Server dan Peran Server terkait , di forum MSDN.

Marian
sumber
1
Bagi mereka yang tidak tahu banyak tentang SQL, Anda harus mengganti AdventureWorks2008R2dengan nama database Anda sendiri. Bagian fn_my_permissionsini sama untuk semua basis data.
SaiyanGirl