2013-09-30 77 views
0

我只是想授予/拒絕我的數據庫安全對象,以用戶使用帶來麻煩。例如,這是我的REVOKE語句使用GRANT和REVOKE

使用MY_DB之一; REVOKE ALTER FROM [UserName]; GO

當我使用SELECT FROM MyDB.sys.database_permissions查看權限時,它表示用戶仍然有權限。你如何撤銷權限?

+0

執行查詢後,在用戶列表上進行刷新。然後選擇用戶並轉到屬性。很可能你看到的是簡單的管理工作室「有益」緩存的東西 – NotMe

+0

試過了已經,仍然顯示用戶刷新數據庫,用戶和用戶領域後,有權限。我甚至在執行查詢後重新啓動了數據庫並刷新了字段,但用戶仍有權限 – Gaven

回答

0

如果用戶有這樣的包括特定安全權限更大,你revoke D於該安全較窄的權限,用戶將仍然由作用域更廣泛grant編許可grant

您可能需要考慮在可保安全的一個deny如果你想要一個例外,一個具有廣泛範圍的資助。

編輯:

鑑於你的SQL:

USE MY_DB; REVOKE ALTER FROM [UserName]; GO 

...你需要指定它只是能夠固定的ALTER允許你撤銷:ALTER ENDPOINTALTER LOGIN

here的適用性在ALTER權限,例如:

REVOKE ALTER LOGIN FROM [UserName] 
+0

我試過了,但問題仍然存在。我可以使用SQL Server Management Studio輕鬆修改權限,但是我無法使用T-SQL使其工作。 – Gaven

+0

我已經編輯了我的答案,並提供了一些關於您在問題中輸入的SQL的具體信息。 –

+0

你發佈的例子給我一個語法錯誤。我也手動從用戶的所有數據庫成員資格和服務器成員中刪除了用戶。我也清除了他所有的模式,並取消了他所有的服務器安全權限。但是,仍然當我嘗試使用T-SQL撤銷他的數據庫安全權限時,什麼都不會發生。看起來很奇怪,我仍然可以使用管理工作室撤消他的數據庫安全權限,但我無法通過T-SQL。 – Gaven