SQL Server DBA維護常用語句

字號:


    數(shù)據(jù)庫的日常維護,可以通過SQL Server中的維護計劃來自動實現(xiàn),非常方便。不過,也不是所有的維護,都可以通過維護計劃來實現(xiàn), 下面將通過代碼來實現(xiàn)
    1、檢查數(shù)據(jù)庫完整性
    代碼如下:
    dbcc checkdb(test)
    --通過加tablock提高速度
    dbcc checkdb(test) with tablock
    2、數(shù)據(jù)庫重命名、修改恢復(fù)模式、修改用戶模式
    代碼如下:
    --數(shù)據(jù)庫重命名
    ALTER DATABASE WC
    MODIFY NAME = test
    --設(shè)置數(shù)據(jù)庫為完整恢復(fù)模式
    alter database test
    set recovery full
    --只允許一個用戶訪問數(shù)據(jù)庫
    alter database test
    set single_user
    with rollback after 10 seconds --指定多少秒后回滾事務(wù)
    --只有sysadmin,dbcreator,db_owner角色的成員可以訪問數(shù)據(jù)庫
    alter database wc
    set restricted_user
    with rollback immediate --立即回滾事務(wù)
    --多用戶模式
    alter database wc
    set multi_user
    with no_wait --不等待立即改變,如不能立即完成,那么會導(dǎo)致執(zhí)行錯誤
    2、擴展數(shù)據(jù)庫:增加文件組、增加文件、修改文件大小、修改文件的邏輯名稱
    代碼如下:
    --添加文件組
    ALTER DATABASE test
    ADD FILEGROUP WC_FG8
    --添加數(shù)據(jù)文件
    ALTER DATABASE test
    ADD FILE
    (
    NAME = WC_FG8,
    FILENAME = 'D:\WC_FG8.ndf',
    SIZE = 1mb,
    MAXSIZE = 10mb,
    FILEGROWTH = 1mb
    )
    TO FILEGROUP WC_FG8
    --添加日志文件
    ALTER DATABASE test
    ADD LOG FILE
    (
    NAME = WC_LOG3,
    FILENAME = 'D:\WC_FG3.LDF',
    SIZE = 1MB,
    MAXSIZE = 10MB,
    FILEGROWTH = 100KB
    )
    --修改數(shù)據(jù)文件的大小,增長大小,最大大小
    ALTER DATABASE test
    MODIFY FILE
    (
    NAME = 'WC_FG8',
    SIZE = 2MB, --必須大于之前的大小,否則報錯
    MAXSIZE= 8MB,
    FILEGROWTH = 10%
    )
    --修改數(shù)據(jù)文件或日志文件的邏輯名稱
    ALTER DATABASE test
    MODIFY FILE
    (
    NAME = WC_LOG3,
    NEWNAME = WC_FG33
    )
    3、移動文件
    復(fù)制代碼 代碼如下:
    --由于在SQL Server中文件組、文件不能離線
    --所以必須把整個數(shù)據(jù)庫設(shè)置為離線
    checkpoint
    go
    ALTER DATABASE WC
    SET OFFLINE
    go
    --修改文件名稱
    ALTER DATABASE WC
    MODIFY FILE
    (
    NAME = WC_fg8,
    FILENAME = 'D:\WC\WC_FG8.NDF'
    )
    go
    --把原來的文件復(fù)制到新的位置:'D:\WC\WC_FG8.NDF'
    --設(shè)置數(shù)據(jù)庫在線
    ALTER DATABASE WC
    SET ONLINE
    4、設(shè)置默認文件組、只讀文件組
    代碼如下:
    --設(shè)置默認文件組
    ALTER DATABASE WC
    MODIFY FILEGROUP WC_FG8 DEFAULT
    --設(shè)為只讀文件組
    --如果文件已經(jīng)是某個屬性,不能再次設(shè)置相同屬性
    ALTER DATABASE WC
    MODIFY FILEGROUP WC_FG8 READ_WRITE
    5、收縮數(shù)據(jù)庫、 收縮文件
    --收縮數(shù)據(jù)庫
    DBCC SHRINKDATABASE('test', --要收縮的數(shù)據(jù)庫名稱或數(shù)據(jù)庫ID
    10 --收縮后,數(shù)據(jù)庫文件中空間空間占用的百分比
    )
    DBCC SHRINKDATABASE('test', --要收縮的數(shù)據(jù)庫名稱或數(shù)據(jù)庫ID
    10, --收縮后,數(shù)據(jù)庫文件中空閑空間占用的百分比
    NOTRUNCATE --在收縮時,通過數(shù)據(jù)移動來騰出自由空間
    )
    DBCC SHRINKDATABASE('test', --要收縮的數(shù)據(jù)庫名稱或數(shù)據(jù)庫ID
    10, --收縮后,數(shù)據(jù)庫文件中空間空間占用的百分比
    TRUNCATEONLY --在收縮時,只是把文件尾部的空閑空間釋放
    )
    --收縮文件
    DBCC SHRINKFILE(wc_fg8, --要收縮的數(shù)據(jù)文件邏輯名稱
    7 --要收縮的目標大小,以MB為單位
    )
    DBCC SHRINKFILE(wc_fg8, --要收縮的數(shù)據(jù)文件邏輯名稱
    EMPTYFILE --清空文件,清空文件后,才可以刪除文件
    )
    6、刪除文件、 刪除文件組
    代碼如下:
    --要刪除文件,必須要先把文件上的數(shù)據(jù)刪除,或者移動到其他文件或文件組上
    --刪除數(shù)據(jù)后,必須要清空文件的內(nèi)容
    DBCC SHRINKFILE(WC_FG8,EMPTYFILE)
    --刪除文件,同時也在文件系統(tǒng)底層刪除了文件
    ALTER DATABASE test
    REMOVE FILE WC_FG8
    --要刪除文件組,必須先刪除所有文件
    --最后刪除文件組
    ALTER DATABASE test
    REMOVE FILEGROUP WC_FG8
    7、重新組織索引
    ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock]
    REORGANIZE
    WITH ( LOB_COMPACTION = ON )
    8、重新生成索引
    代碼如下:
    ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock]
    REBUILD PARTITION = ALL
    WITH ( PAD_INDEX = OFF,
    STATISTICS_NORECOMPUTE = OFF,
    ALLOW_ROW_LOCKS = ON,
    ALLOW_PAGE_LOCKS = ON,
    ONLINE = OFF,
    SORT_IN_TEMPDB = OFF )
    9、更新統(tǒng)計信息
    代碼如下:
    --更新表中某個的統(tǒng)計信息
    update statistics temp_lock(_WA_Sys_00000001_07020F21)
    update statistics temp_lock(_WA_Sys_00000001_07020F21)
    with sample 50 percent
    update statistics temp_lock(_WA_Sys_00000001_07020F21)
    with resample, --使用最近的采樣速率更新每個統(tǒng)計信息
    norecompute --查詢優(yōu)化器將完成此統(tǒng)計信息更新并禁用將來的更新
    --更新索引的統(tǒng)計信息
    update statistics temp_lock(idx_temp_lock_id)
    with fullscan
    --更新表的所有統(tǒng)計信息
    update statistics txt
    with all
    10、執(zhí)行SQL Server代理作業(yè)
    11、備份數(shù)據(jù)庫(完整、差異、日志備份),這個在其他文章中已有詳細描述,這里不再贅述。
    代碼如下:
    ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock]
    REBUILD PARTITION = ALL
    WITH ( PAD_INDEX = OFF,
    STATISTICS_NORECOMPUTE = OFF,
    ALLOW_ROW_LOCKS = ON,
    ALLOW_PAGE_LOCKS = ON,
    ONLINE = OFF,
    SORT_IN_TEMPDB = OFF )