我怎樣才能訪問數據庫一段時間停止特定用戶,但同時不失去用戶對數據庫對象的權限。保留SQLServer的權限
基本上,當他回來時(即授予訪問回),他應該有他有的所有之前,他的訪問被切斷的權限。如果我使用sp_revokedbaccess'myuser',用戶myuser將失去對db對象的所有權限。
有沒有辦法保存爲myuser的權限,而不訴諸繁瑣的備份權限和恢復權限一種解決方法嗎?
我怎樣才能訪問數據庫一段時間停止特定用戶,但同時不失去用戶對數據庫對象的權限。保留SQLServer的權限
基本上,當他回來時(即授予訪問回),他應該有他有的所有之前,他的訪問被切斷的權限。如果我使用sp_revokedbaccess'myuser',用戶myuser將失去對db對象的所有權限。
有沒有辦法保存爲myuser的權限,而不訴諸繁瑣的備份權限和恢復權限一種解決方法嗎?
思考:
DENY CONNECT user或DENY CONNECT SQL TO login(sp_revokedbaccess已過時)
不能使用ALTER_LOGIN與DISABLE參數來拒絕訪問到Windows組(鏈接引用)
分配數據庫角色的所有權限,然後撤銷用戶的權限。需要時將用戶添加到角色。無論如何直接爲用戶分配對象權利是一個好主意。
如果用戶擁有系統管理員權限,你不能否認他們在所有的東西(也許連接SQL?)
如果用戶的db_owner權限(假設成立於DB),你不能否認他們數據庫中的任何東西,除了連接
用戶如何訪問數據庫?如果通過應用程序,那麼只需登錄用戶並要求用戶重新進行身份驗證。
這是一個應用程序用戶標識 - 我們希望在維護期間刪除訪問權限,但在完成後將其恢復。 – OpenSource 2009-08-11 23:36:22
我們要維護時刪除訪問,但把他帶回它完成之後。
讓維護進程獲取它正在處理的任何表的獨佔鎖。這會鎖定每個人,直到處理完成。
你可以將數據庫切換到單用戶模式嗎? http://msdn.microsoft.com/en-us/library/ms345598.aspx
或腳本了您刪除它們之前的權限:http://www.sql-server-performance.com/articles/dba/object_permission_scripts_p1.aspx。我知道這是「備份權限和恢復權限」 - 但是這個腳本使得這個過程不那麼繁瑣。
你應該可以顯式拒絕他的權限,然後撤消拒絕。
您還可以ALTER LOGIN ... DISABLE
禁止登錄,但將在服務器級別,而不是數據庫級別阻止。
黑客解決方案是將用戶映射到不同的登錄名,然後將他映射回(ALTER USER .. LOGIN = ...
),但是是黑客攻擊,我不確定哪怕工作正常。
我看到它的最簡單方法是禁用登錄。您可以在狀態頁面下的SSMS中的登錄屬性上執行此操作。
可以實現與下面的T-SQL同樣的事情:
假設您的登錄是Bob SQL登錄,也可以是Windows登錄
ALTER LOGIN bob DISABLE
然後,使登錄
ALTER LOGIN bob enable
如果當前密碼已知,請在維護窗口中將密碼更改爲臨時值。將密碼重新設置爲其初始值可達到此目的,而不會對帳戶進行任何重大更改。
如果您使用的是Windows身份驗證,您可以鎖定從域中所有該用戶,您可以設置允許用戶在Active Directory中登錄的時間。我無法提供詳細的說明,但現在應該有一些關於ServerFault的內容。
謝謝所有 - 我會去與DENY連接 - 因爲我的要求是SQL 2005年。我檢查了SQL 2000.在2000年將禁用登錄。再次感謝 – OpenSource 2009-08-12 18:15:56