選項 1、
single_user(單用戶),multi_user(多用戶),restricted_user(受限用戶);
描述數據庫的用戶訪問屬性,它們互斥,設置其中任何一個選項就會取消對其它選項的設置
single_user模式的數據庫每次只能有一個連接。
restricted_user模式可以有多個連接,前提是這些用戶要是被認為是‘合格’的如 sysadmin,dbcreator,dbowner。
multi_user任何有效的用戶都可以連接。
例子:
alter database studio
set single_user
with
rollback immediate ; ---- | rollback after 1000|no_wait;
go
注意:這個時候只有一個連接可以操作數據庫,如果別的連接想要操作數據庫,它會失敗,不是因為它的權限問題,而是只可以有一個連接。
選項 2、
online, offline, emergency 它們互斥
如果數據被設置為offline,它就會關閉而且完全關掉,並且標記為脫機,數據庫脫機時不可以有被修改,如果數據庫
中有任何連接都不可以被標記為offline。
例子:
select name , state_desc
from sys.databases
where name = 'studio'
with rollback immediate ; ---- | rollback after 1000|no_wait;
go
注意:
對於數據庫的狀態我們可以設置是只有 offline ,online,emergency! 它的一些別的狀態我們是不可能對它進行設置的
如:從備份中還原的過程會對應 recovering ,如果出於一些原因沒有辦法完成還原就會對應 recovery_pending;
如:還原過程中檢測出了數據損壞就會對應 suspect,數據庫就會變得完全不可用,很多情況下可以把數據庫設置為 emergency
從而可以對它進行只讀操作,如果的丟失數據庫的一個或多個日志文件,在將數據庫復制到新位置時,用emergency 模式還
還可以對數據庫進行訪問。從recovery_pending 轉換到 emergency時SQL Server會關閉數據庫,然后用特殊的標記重新
啟動,這樣會跳過恢復過程,跳過恢復意味着可能會有邏輯上的錯誤或物理上的不一致(如 索引丟失,斷開頁面)
選項 3、
read_only ,read_write
-----------------------
alter database studio
set read_only
with
rollback immediate; ---- | rollback after 1000|no_wait;
go
----------------------------------------------------------------------------------------------------------------------------------------------------
狀態選項都可以和
rollback immediate | rollback after 1000 | no_wait;
配合