2013年1月30日 星期三

MSSQL筆記


-- 檢查索引碎片 DBCC SHOWCONTIG(表)
DBCC SHOWCONTIG(DBLog)

-------------------------------------------------------------
-- 重建索引
-- DBCC DBREINDEX(表,索引名,填充因子)
-- 第一個參數,可以是表名,也可以是表ID。
-- 第二個參數,如果是'',表示影響該表的所有索引。
-- 第三個參數,填充因子,即索引頁的數據填充程度。如果是100,表示每一個索引頁都全部填滿,此時select效率最高,但以後要插入索引時,就得移動後面的所有頁,效率很低。如果是0,表示使用先前的填充因子值。
DBCC DBREINDEX (oldLog);
-- 或者
DBCC DBREINDEX (oldLog,'',0);

-------------------------------------------------------------
-- 修復資料表
use [庫]

declare @dbname varchar(255)

set @dbname='庫'

exec sp_dboption @dbname,'single user','true'

dbcc checktable('表',REPAIR_ALLOW_DATA_LOSS)

dbcc checktable('表',REPAIR_REBUILD)

-- 把’ 需要修復的資料表的名稱’更改為執行DBCC CHECKDB時報錯的資料表的名稱

exec sp_dboption @dbname,'single user','false'


-------------------------------------------------------------
-- 修復資料庫
use master

declare @databasename varchar(255)

set @databasename='需要修復的資料庫實體的名稱'

exec sp_dboption @databasename, N'single', N'true' --將目標資料庫置為單使用者狀態

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--將目標資料庫置為多使用者狀態

-------------------------------------------------------------
-- 依時間刪除最前面1000筆資料
-- 參考: http://msdn.microsoft.com/zh-tw/library/ms175486(v=sql.105).aspx
delete from oldLog where ID in (select top 1000 ID from oldLog order by LogDateTime asc)

-------------------------------------------------------------
--查詢資料庫磁碟空間使用量
USE 庫
GO
EXEC sp_spaceused
GO

-- 查看某資料表的資料大小
sp_spaceused 資料表的名稱

-------------------------------------------------------------
-- 找出目前使用的資料庫的每一張資料表的資料大小
sp_MsForEachTable "Sp_SpaceUsed '?'"

-------------------------------------------------------------
-- reset identity column 重置自動編號的欄位 重設為起始值0
DBCC CHECKIDENT('your table_name', RESEED, 0)

-------------------------------------------------------------
--啟用資料列壓縮 MAXDOP:處理器數量 最大8 不能設超過
ALTER TABLE [dbo].[表]
REBUILD WITH (DATA_COMPRESSION=ROW, MAXDOP=2);  --資料列壓縮
-- 或者
--ALTER TABLE [dbo].[表]
-- REBUILD WITH (DATA_COMPRESSION=PAGE, MAXDOP=2); --資料頁壓縮

-------------------------------------------------------------
--查詢 sys.database_files 目錄檢視以取得資料檔的 file_id。
Use 庫
SELECT file_id, name
FROM sys.database_files;
GO

-------------------------------------------------------------

0 意見: