Sql-Server
設置 READ_Write 的含義
我正在尋找更新
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
但是我想:
- 保證這不會無限期掛起
- 確保在此操作期間不能將任何內容寫入數據庫
由於我無法將這些命令放入事務中,並且我在 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