關於SqlSever管理的乾貨

2021-07-24 20:56:13 字數 2205 閱讀 6663

一。sqlsever 的 恢復模式

1. full 模式,,full模式的舊稱叫」checkpoint without truncate log「,這種情況的日誌,會大量記錄。在資料完整備份後仍然不會截斷日誌,只有進行日誌備份後才會把日誌截斷。

tip1:完整備份需要主意的時,備份的資料,會是以結束時間為準(即備份了到結束為止的所有資料).12:00:01分開始=>12:01:59分,並這個區間的資料以事務日誌的方式  呈現。

2.bulk_logged 模式,這種模式基本與full模式一致。唯一的不同是針對以下bulk操作,會產生盡量少的log

1) bulk load operations (bcp and bulk insert).

2) select into.

3) create/drop/rebuild index

眾所周知,通常bulk操作會產生大量的log,對sql server的效能有較大影響,bulk-logged模式的作用就在於降低這種效能影響,並防止log檔案過分增長,但是它的問題是無法point-in-time恢復到包含bulk-logged record的這段時間。

bulk-logged模式的最佳實踐方案是在做bulk操作之前切換到bulk-logged,在bulk操作結束之後馬上切換回full模式。

3.******模式。

******模式的舊稱叫」checkpoint with truncate log「,其實這個名字更形象,在******模式下,sql server會在每次checkpoint或backup之後自動截斷log,也就是丟棄所有的inactive log records,僅保留用於例項啟動時自動發生的instance recovery所需的少量log,這樣做的好處是log檔案非常小,不需要dba去維護、備份log,但壞處也是顯而易見的,就是一旦資料庫出現異常,需要恢復時,最多只能恢復到上一次的備份,無法恢復到最近可用狀態,因為log丟失了。

******模式主要用於非critical的業務,比如開發庫和測試庫,但是道富這邊的sql server(即使是生產庫)大都採用******模式,是因為這邊的sql server大都用於非critical的業務(critical的資料庫大都採用oracle和db2),可以忍受少於1天的資料丟失(我們的job每天都會定時備份全庫)。

alter database test set recovery bulk_logged with no_wait --大容量日誌

二.使用者模式:

1.single_user  乙個在單使用者(single_user)模式下的資料庫一次只能有乙個連線。

2.restricted_user 在限制使用者(restricted_user) 模式下的資料庫只能接受被認為是「合格」使用者的連線

——這些使用者屬於 dbcreator 或 sysadmin 伺服器角色,或者是那個資料庫的db_owner角色的成員。

3.multi_user  資料庫在預設時處於多使用者模式(multiple_user),這意味著所有具有乙個資料庫中有效使用者名稱的使用者都可以連線該資料庫。

sp_dboption test,"single user",true sp_dboption test,"single user",false

alter database [test] set multi_user with rollback immediate

三.資料日誌

1.檢視大小方式

exec sp_helpdb  test                   db_size(kb)

select * from sys.database_files   size=db_size/8  (dbcc shrinkdatabse和dbcc shinkfile都是以乙個區(8個頁為乙個區)為單位進行資料檔案收縮的,)

2.備份,

backup log test1 to db_bk_dev  

backup database test1 to disk='mydb_bak'

3.收縮檔案

dbcc shrinkfile(n'test_log',1)--收縮至1m=1024kb =1024/8=128(size)

dbcc shrinkfile(n'test_log') --不指定大小則壓縮到最小(可以不用同時壓縮資料檔案)

dbcc shrinkfile(test_log)  

dbcc shrinkdatabase(test)  --壓縮資料檔案及日誌文



關於sqlsever 匯出檔案

這裡使用xp cmdshell命令。mark一下。注 如果操作sql server的使用者沒有sp configure的使用許可權,需要將對應使用者新增 sysadmin 角色。1 開啟 xp cmdshell 命令,方法如下 推薦此方法,因為在任何版本的sql server中都可以使用。通過查詢分...

SQL Sever 中的連線

內連線 是一種比較常用的鏈結查詢方式,列出這些基表中與連線條件相匹配的所有資料行。語法是 select select list from table1inner join table2 where search conditions order byorder expression 給定連個表 乙個...

SQL Sever 表的操作

use emis301 goalter table 課程 add 學分 tinyint notnull go use emis301 goalter table 班級 alter column 備註 varchar notnull goalter table 系部 drop column 系部介紹 ...