0

我們對應用程序(NextGen ERH)要求使用sysadmin角色的憑據使用SQL Server(2016,本地)數據庫。防止用戶將數據庫設置爲單用戶模式

我們的需求是防止技術用戶將DB設置爲單用戶模式 ​​- 我們注意到有時會發生這種情況,並希望阻止未來的情況發生。

所以,問題是 - 我如何實現它? Revoke alter any database from username - 沒有幫助,用戶仍然可以將DB設置爲單用戶模式。

數據庫用戶對於SQL服務器是本地的,而不是Windows身份驗證。

+3

你不能阻止系統管理員做任何事情 – DavidG

+1

^^^沒錯。用更少的權利創建用戶。 –

+0

您將很難將這樣的產品賣給基礎設施團隊 –

回答

0

如果你想防止單用戶模式,整個數據庫,你可以使用下面的代碼

exec sp_dboption 'your_database_name_goes_here', 'single user', 'FALSE' 

的SQL Server版本高於2005

ALTER DATABASE 'your_database_name_goes_here' SET MULTI_USER 

如果你希望數據庫是隻能通過系統管理員設置爲單服務器模式,您可以使用以下代碼

ALTER DATABASE 'your_database_name_goes_here' 
SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE 

如果t他技術用戶不屬於系統管理員角色,那麼上面的代碼將阻止他將數據庫設置爲單用戶模式。

編輯

要使用SSMS

  • 在對象資源管理器中設置一個數據庫,以多用戶模式,連接到SQL Server數據庫 引擎實例,然後展開該實例。
  • 右鍵單擊要更改的數據庫,然後單擊「屬性」。
  • 在數據庫屬性對話框中,單擊選項頁面。
  • 從「限制訪問」選項中,選擇「多個」。
  • 如果其他用戶連接到數據庫,則會顯示「打開連接」消息。要更改該屬性並關閉所有其他連接,請單擊是。
+0

sp_dboption是從SQL Server 2005,並已被刪除,因爲該版本https://technet.microsoft.com /en-us/library/ms187310(v=sql.105).aspx。我們在SQL Server 2016上,忘記提及 – vyarovoy

+0

您可以使用ALTER DATABASE'your_database_name_goes_here'SET MULTI_USER作爲替代方案 –

+0

這一切都很清楚如何進入單用戶模式並返回。原來的問題是 - 如何防止(例如通過撤銷權限)用戶在單一模式下設置數據庫。特殊情況 - 用戶具有sysadmin數據庫角色。 – vyarovoy

相關問題