2009-08-11 103 views
1

我怎樣才能訪問數據庫一段時間停止特定用戶,但同時不失去用戶對數據庫對象的權限。保留SQLServer的權限

基本上,當他回來時(即授予訪問回),他應該有他有的所有之前,他的訪問被切斷的權限。如果我使用sp_revokedbaccess'myuser',用戶myuser將失去對db對象的所有權限。

有沒有辦法保存爲myuser的權限,而不訴諸繁瑣的備份權限和恢復權限一種解決方法嗎?

+0

謝謝所有 - 我會去與DENY連接 - 因爲我的要求是SQL 2005年。我檢查了SQL 2000.在2000年將禁用登錄。再次感謝 – OpenSource 2009-08-12 18:15:56

回答

3

思考:

  1. DENY CONNECT userDENY CONNECT SQL TO loginsp_revokedbaccess已過時)

  2. 不能使用ALTER_LOGIN與DISABLE參數來拒絕訪問到Windows組(鏈接引用)

  3. 分配數據庫角色的所有權限,然後撤銷用戶的權限。需要時將用戶添加到角色。無論如何直接爲用戶分配對象權利是一個好主意。

  4. 如果用戶擁有系統管理員權限,你不能否認他們在所有的東西(也許連接SQL?)

  5. 如果用戶的db_owner權限(假設成立於DB),你不能否認他們數據庫中的任何東西,除了連接

0

用戶如何訪問數據庫?如果通過應用程序,那麼只需登錄用戶並要求用戶重新進行身份驗證。

+0

這是一個應用程序用戶標識 - 我們希望在維護期間刪除訪問權限,但在完成後將其恢復。 – OpenSource 2009-08-11 23:36:22

0

我們要維護時刪除訪問,但把他帶回它完成之後。

讓維護進程獲取它正在處理的任何表的獨佔鎖。這會鎖定每個人,直到處理完成。

1

你應該可以顯式拒絕他的權限,然後撤消拒絕。

您還可以ALTER LOGIN ... DISABLE禁止登錄,但將在服務器級別,而不是數據庫級別阻止。

黑客解決方案是將用戶映射到不同的登錄名,然後將他映射回(ALTER USER .. LOGIN = ...),但是是黑客攻擊,我不確定哪怕工作正常。

2

我看到它的最簡單方法是禁用登錄。您可以在狀態頁面下的SSMS中的登錄屬性上執行此操作。

可以實現與下面的T-SQL同樣的事情:

假設您的登錄是Bob SQL登錄,也可以是Windows登錄

ALTER LOGIN bob DISABLE 

然後,使登錄

ALTER LOGIN bob enable 
0

如果當前密碼已知,請在維護窗口中將密碼更改爲臨時值。將密碼重新設置爲其初始值可達到此目的,而不會對帳戶進行任何重大更改。

0

如果您使用的是Windows身份驗證,您可以鎖定從域中所有該用戶,您可以設置允許用戶在Active Directory中登錄的時間。我無法提供詳細的說明,但現在應該有一些關於ServerFault的內容。

相關問題