Rea*_*ces 2 sql-server t-sql sql-server-2012 locking read-only-database
我希望更新READ_ONLY
数据库上的几个用户。
由于数据库在全球范围内 24/7 全天候使用,并且维护窗口刚刚过去,我想在活动量低的时刻执行此操作(以便能够遵守截止日期)。
我目前正在考虑使用:
USE MASTER
GO
ALTER DATABASE SQL SET READ_WRITE
GO
USE SQL
GO
EXEC sp_addrolemember N'db_datareader', N'USER'
GO
USE MASTER
GO
ALTER DATABASE SQL SET READ_ONLY
GO
Run Code Online (Sandbox Code Playgroud)
但是我想:
由于我无法将这些命令放入事务中,而且我在 DEV 或 STG 环境中没有方便的应用程序服务器来预先测试更改,是否有任何有关更改read_only
单个操作状态的文档?(我确实测试了 T-SQL 语句,并且它们有效)
另外,由于这需要对数据库进行排他锁,我什至有可能通过我的语句吗?
我倾向于只是提出这将不得不等到下一个维护窗口期间。但我希望这里有人能证明我错了。
您可以将数据库设置为SINGLE_USER
在执行更改时没有其他会话进入。此外,sp_addrolemember
已被弃用;你应该ALTER ROLE
改用。最后,请养成使用语句终止符的习惯。
USE master;
GO
ALTER DATABASE SQL SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE SQL SET READ_WRITE;
GO
USE SQL;
GO
ALTER ROLE db_datareader ADD MEMBER [USER];
GO
USE master;
GO
ALTER DATABASE SQL SET READ_ONLY;
ALTER DATABASE SQL SET MULTI_USER;
GO
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
954 次 |
最近记录: |