Bao*_*dad 7 sql-server access-control sql-server-2008-r2
在我工作的地方,我们有一个 SQL Server 数据库(Microsoft SQL Server 2008 R2)作为后端,有两个不同的用户界面,一个 .NET Web 界面和一个 FoxPro 界面。
每个月我们都需要对 Web 和 FoxPro 客户端应用更新。在执行此操作之前,建议我们确保在更新过程中没有人访问数据库。
在我们更新数据库时阻止访问数据库的最简单方法是什么?后续问题:在我们更新时阻止访问的最佳方法是什么?
db2*_*db2 10
如果将数据库置于受限用户模式下,则只有固定服务器角色成员sysadmin或dbcreator固定数据库角色,或者成员db_owner可以访问数据库:
ALTER DATABASE my_app_db SET RESTRICTED_USER
Run Code Online (Sandbox Code Playgroud)
如果要强制关闭现有连接:
ALTER DATABASE my_app_db SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)
当您准备好让一切恢复正常时:
ALTER DATABASE my_app_db SET MULTI_USER
Run Code Online (Sandbox Code Playgroud)
来源:http : //www.blackwasp.co.uk/SQLRestrictedUser.aspx
在这些情况下,我不建议使用单用户模式,因为应用程序更新过程可能需要同时打开多个连接。
有几种方法可以限制对数据库的访问:
将数据库保持在单用户模式下使用(请注意,这将有风险,因为如果有任何其他连接到数据库,那么您最终可能会等待或拒绝连接。)
alter database databasename
set single_user with rollback immediately
Run Code Online (Sandbox Code Playgroud)在维护窗口期间,您最好使用选项 2 作为安全且有计划的升级。
编辑:
受限用户- 仅允许对数据库具有 dbo 权限的用户(例如 db_owner、dbcreator、sysadmin)。这意味着多个用户仍然可以登录到数据库,只要他们是 DBO。
单用户- 只允许一个连接,即先到先得。
由于单用户先到先得的事实 - 如果出现错误或以某种方式终止您的连接,这将更具风险。
在处理登录触发器时,正如@AaronBertrand 指出的那样,它不适用于现有会话,但您可以通过首先杀死所有会话然后启用触发器来克服这一点,以便所有新传入的连接都必须通过扳机。
我想不出任何其他方式来限制与数据库的连接。
| 归档时间: |
|
| 查看次数: |
41148 次 |
| 最近记录: |