SQL 2008 壓縮交易紀錄檔
作者: 日期:2010-04-06 11:09
本文件針對SQL Server 2008經測試後進行壓縮交易紀錄檔已不支援之指令,用以資料庫整理時參考。
目前測試SQL2008已經不支援以下指令
1. --01 使用 BACKUP LOG ... WITH NO_LOG
2. BACKUP LOG SmartIT
3. WITH NO_LOG
4. GO
5.
6. --02 或是,使用 BACKUP LOG ... WITH TRUNCATE_ONLY
7. BACKUP LOG SmartIT
8. WITH TRUNCATE_ONLY
9. GO
10.
11. –03 或是
12. DUMP TRANSACTION SmartIT With no_log
於SQL2008上避免交易紀錄擋過大的方式為將資料庫轉為「簡單復原模式」
手動操作方式如下:
Step 1. 對資料庫點選右鍵>屬性

Step2. 在選項裡面的<復原模式>選擇<簡單>,再按確定。交易紀錄檔就不會再增加了,若是要恢復原來模式,重複以上步驟再調回<完整>即可
若使用指令的話command如下:
2. ALTER DATABASE SmartIT
3. SET RECOVERY SIMPLE
4. GO
5.
6. --02 若決定要備份交易記錄檔(*.ldf),再將資料庫 SmartIT 切換回「完整復原模式」
7. ALTER DATABASE SmartIT
8. SET RECOVERY FULL
9. GO
==================================
上班時間禁止玩開心農場
作者:SmartIT 日期:2009-10-28 11:48
上班時間禁止玩開心農場
Facebook內提供遊戲竄紅,
在此提供給使用SmartIT 的管理者控管Facebook的方法,
Facebook瀏覽主網址
http://www.facebook.com/
Facebook附加程式主網址,遊戲及心理測驗都會導向此網址
http://apps.facebook.com/
如何設定控管禁止使用開心農場(其他小遊戲及心理測驗)
設定一: 新增Facebook的網址至清單
登入Console>資訊安全>網站瀏覽管理>網址清單
點選左方[新增]>新增一筆欲控管網址資料
網址輸入: http://apps.facebook.com/
網址標題輸入:facebook
確認輸入正確後儲存
*此規則會禁用所有網址標題包含Facebook(一般瀏覽Facebook訊息也會被禁用)
若只要控管附加程式,網址標題設定空白即可
設定二: 設定欲禁止瀏覽的電腦或使用者
登入Console>資訊安全>網站瀏覽管理>依網址作禁用管理
點選左方電腦或使用者>選擇黑名單模式
勾選剛新增的Facebook網址
確認輸入正確後儲存
*若欲開放中午允許瀏覽,於例外時間請勾選AM 12:00,並儲存.
*若是依使用者登入帳號控管,須於使用者下次登入才會套用設定.
SQL Server 資料庫維護
作者:SmartIT 日期:2009-08-17 11:43
SQL Server 資料庫維護
本文件針對SQL Server 2005上的SmartIT資料庫作效能改進,與資料庫整理時可參考使用。
介紹說明:
一、DB Backup 「單一備份」
二、DB Backup 「每日備份至一週」
三、DB reindex 「資料庫索引重建」
四、資料庫壓縮
五、資料庫修復
六、快速查詢資料庫資料表筆數
七、清除交易紀錄檔
八、操作流程建議
九、排程設定圖解
註:文中所有之DB_Name,意指SmartIT之資料庫名稱,標記紅色字體為可變更。
一、DB Backup 「單一備份」
-----------------------------------------DB Backup-----------------------------------------------
BACKUP DATABASE [DB_Name]TO DISK = N'D:\SmartIT_DB_BAK\smartit_bk.bak' WITH INIT,NOUNLOAD,
NAME = N'smartit_bk',NOSKIP,STATS = 10,NOFORMAT
----------------------------------------- DB Backup-----------------------------------------------
*DB_Name,意指SmartIT資料庫名稱
*D:\SmartIT_DB_BAK\smartit_bk.bak,意指備份路徑及備份檔案名稱
建議設定方式:
資料庫備份建議為一周一次,如果資料異動不多,
可設定一個月一次,在週六或週日執行比較不影響效能。
==========================================================
二、DB Backup 「每日備份至一週」
說明:
使用下列指令可以備份資料庫,只備份七個檔案不會累加,檔名為週一到週日,
會做完整備份。
-------------------------- DB Backup 週備份-----------------------------
DECLARE @bkFileName nvarchar(255)
SET DATEFIRST 1
SELECT @bkFileName =
CASE DATEPART(dw, GETDATE())
WHEN 1 THEN N'D:\星期一.bak'
WHEN 2 THEN N'D:\星期二.bak'
WHEN 3 THEN N'D:\星期三.bak'
WHEN 4 THEN N'D:\星期四.bak'
WHEN 5 THEN N'D:\星期五.bak'
WHEN 6 THEN N'D:\星期六.bak'
WHEN 7 THEN N'D:\星期日.bak'
END
BACKUP DATABASE [DB_Name] TO DISK = @bkFileName WITH INIT,NOUNLOAD,NAME=N'SMARTIT 備份',NOSKIP,STATS=10,NOFORMAT
-------------------------- DB Backup 週備份-----------------------------
*DB_Name,意指SmartIT資料庫名稱
*D:\星期一.bak,意指備份路徑及備份檔案
建議操作設定方式:
使用此備份可設定每天都做備份,但是每次備份為full Backup,且不是累加方式備份,
只會產生7個檔案,週一到週日,如果硬碟夠大的話可以用來做這樣的備份。
==========================================================
三、DB reindex 「資料庫索引重建」
說明:
重建索引的目的在於:當使用者需透過該欄位,
從資料檔(或表格)搜尋所要的記錄(或行)時,借索引之助,可大幅提高資料檢索的速度。
------------------------ DBREINDEX ALL TABLE -----------------------------
DECLARE @TableName nvarchar(261)
DECLARE @SQLStatement nvarchar(4000)
DECLARE TableList CURSOR LOCAL FAST_FORWARD READ_ONLY FOR
SELECT
QUOTENAME(TABLE_SCHEMA) +
N'.' +
QUOTENAME(TABLE_NAME)
FROM
INFORMATION_SCHEMA.TABLES
WHERE EXISTS
(
SELECT *
FROM sysindexes
WHERE id =
OBJECT_ID(QUOTENAME(TABLE_SCHEMA) +
N'.' +
QUOTENAME(TABLE_NAME)) AND
indid IN(0,1)
)
OPEN TableList
WHILE 1 = 1
BEGIN
FETCH NEXT FROM TableList INTO @TableName
IF @@FETCH_STATUS = -1 BREAK
RAISERROR ('Reindexing %s', 0, 1, @TableName) WITH NOWAIT
Print(@TableName)
DBCC DBREINDEX (@TableName, '', 70)
EXEC(@SQLStatement)
END
CLOSE TableList
DEALLOCATE TableList
------------------------ DBREINDEX ALL TABLE --------------------------
建議操作設定方式:
此設定建議在清除交易紀錄檔之前執行,
於每天晚上22:00執行,因執行後會有交易紀錄。
==========================================================
四、資料庫壓縮
說明:
執行此設定會縮減 User DB 使用者資料庫的檔案大小,
讓User DB 的檔案騰出 10% 的可用空間。
--------------------------資料庫壓縮--------------------------
DBCC SHRINKDATABASE (DB_Name, 10)
--------------------------資料庫壓縮--------------------------
*DB_Name,意指SmartIT資料庫名稱
建議操作設定方式:
資料庫壓縮可設定手動執行,如有清除資料後再作此壓縮比較適合。
==========================================================
五、資料庫修復
說明:
使用此script的時機,主要在於當我們在使用報表時,
在擷取資料時如果出現『逾時過期』訊息時,建議使用下列指令修復資料庫,
特別注意第一行與最後一行『sp_dboption DB_Name,single, true』
『sp_dboption DB_Name,single, false』與中間指令要分開執行。
Step1:
----------------------------------------------------
sp_dboption DB_Name, single , true
----------------------------------------------------
**DB_Name,意指SmartIT資料庫名稱
**如執行時發生失敗,請重新啟動SQL Server Service後,再試一次
Step2:
----------------------------------------------------
dbcc checktable ("Table_Name",repair_allow_data_loss)
dbcc dbreindex ("Table_Name")
----------------------------------------------------
**Table_Name,意指SmartIT資料表名稱
Step3:
----------------------------------------------------
sp_dboption DB_Name, single , false
----------------------------------------------------
**DB_Name,意指SmartIT資料庫名稱
下列為可能需要修復的資料表對照表:
Table Name / 資料名稱
organization_group 組織
users 人員
smartit SmartIT主表(電腦清單)
software 軟體
virtual_software 軟體虛擬群組
virtual_software_mapping 虛擬群組對應
software_change 軟體變更
system_change 系統變更
appusage 軟體使用率
url_audit 網站稽核
print_log 印表機稽核
imlog 即時通訊稽核
files_audit_log 檔案抄寫稽核
**此段設定可針對有問題部分執行即可,不需全部執行。
建議操作設定方式:
資料庫修復使用時機適合在某資料表過大造成報表無法產生時執行,
執行時會將資料庫離線,建議在非資產回傳尖峰時間執行,
且須停止SmartIT Server服務,以加快執行速度。
==========================================================
六、快速查詢資料庫資料表筆數
說明:
使用下列指令可以快速查詢資料表的大小,
藉此方式可以判斷是否有哪些資料表資料量過大,提供維護人員或管理人員參考使用。
-----------------------快速查詢資料庫資料表筆數-------------------------
select a.name,max(b.rows) as rows
from sysobjects a,sysindexes b where a.id= b.id and a.xtype = 'U'
group by a.name
order by max(b.rows)
-----------------------快速查詢資料庫資料表筆數-------------------------
建議操作設定方式:
使用此Script可搭配資料庫修復使用,目的在於先檢測資料庫每個資料表的資料量,
藉此判斷是否需要做資料庫修復。
==========================================================
七、清除交易紀錄檔
說明:
交易紀錄檔的產生,是每個與資料庫連結的動作之紀錄,
若SQL Server的交易紀錄一直沒有去清除的話,會導致整個資料庫都不能使用。
指令說明:
執行Backup Log with Truncate_Only 其用法是備份資料庫的Log檔,
由於我們在語法中沒有指定備份的裝置為何,
Sql Server即會認為此動作為單純要把已交易完成的Log資料清空
(已交易完成的資料所指即為已commit的資料),
而Truncate_Only的選項則是告訴Sql Server目的在清空Log之空間,
至於清出的空間則由Sql Server管理,不還給OS。
Backup Log完成後,要再執行DBCC SHRINKFILE ,其作為為將資料的空間作重整及壓縮至2M。
----------------------------清除交易紀錄檔--------------------------
use DB_Name
Backup Log DB_Name with TRUNCATE_ONLY
dbcc shrinkfile (DB_Name _log , 2)
----------------------------清除交易紀錄檔--------------------------
*DB_Name,意指SmartIT資料庫名稱
--------清除DB Name為SmartIT的交易紀錄檔範例--------
use SmartIT
Backup Log SmartIT with TRUNCATE_ONLY
dbcc shrinkfile (SmartIT_log , 2)
--------清除DB Name為SmartIT的交易紀錄檔範例--------
建議操作設定方式:
建議交易紀錄檔可設定每天晚上23:30執行,交易紀錄檔越大,存取資料的速度也會越慢。
==========================================================
八、操作流程建議:
Mdf 過大,資料量過多
順序為
1、資料表查詢 <確認資料表資料大小>
2、詢問user是否可以先進行瘦身(記錄檔維護)
3、清除交易紀錄檔
4、壓縮資料庫
5、db reindex
6、備份
Ldf 過大,交易紀錄檔太大
順序為
1、清除交易紀錄檔
2、資料表查詢
3、詢問user是否可以先進行瘦身(記錄檔維護)
4、清除交易紀錄檔
5、壓縮
6、db reindex
7、備份
==========================================================
九、SQL Server 2005排程設定圖解說明
Step1:開啟資料庫程式。

Step2:選擇使用可設定排程的權限登入,並確認連結的資料庫是否正確。

Step3:開啟「SQL Server Agent」的作業,在右手邊空白處點選(滑鼠右鍵),選擇新增作業。

Step4:設定排程作業的名稱,本範例 以重建索引設定來說明。

Step5:選擇「步驟」,在按下「新增」,建立一個指令執行步驟。

Step6:開啟頁面後,先設定步驟名稱、選擇資料庫、在將指令貼到命令區塊中,設定完成後按確定儲存。

Step7:選擇「排程」,在按下「新增」,建立一個執行步驟。

Step8:設定排程名稱,要執行的天數,與時間,最後再按下「確定」回到設定畫面。

Step9:設定完成後可在排程清單中看到所有設定項目。

Step10:
建議設定時間分開執行,為避免同時執行排程造成資料庫異常,
必需將每個排程時間都隔開。
控管鑲在Excel內的Flash遊戲
作者:SmartIT 日期:2009-07-08 11:46
派送登錄檔(不跳出詢問視窗)
作者:SmartIT 日期:2008-12-08 11:46
派送登錄檔且不跳出詢問視窗
若要遠端派送登錄檔,當派送時,會出現是否要執行此登錄檔的對話方塊,
此時可加上 /s,對話方塊就不會出現了!
例如:regedit /s \\server\share\vnc.reg
修復資料庫-灰色水筒
作者:SmartIT 日期:2008-09-03 17:18
資料庫----灰色水筒修復法
碰到顯示無法辨識的資料庫該如何修復?
1.先建立一個同名的資料庫, 然後離線工作 (注意資料庫的資料夾 不要用C:\Program Files\Microsoft SQL Server\MSSQL\, 改用如C:\BACK1\, 救資料才會成功)
2.刪除新的.MDF, .LDF, 複製原資料庫SMARTIT.MDF, 不要SMARTITLOG. LDF
3.執行下列指令, 若失敗, 請重新啟動SQL 多做幾次
DBCC CHECKDB
exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE
update sysdatabases set status=32768 where name='SMARTIT'
DBCC REBUILD_LOG ('SMARTIT','C:\BACK1\SMARTIT_Log.LDF')
update sysdatabases set status=0 where name='SMARTIT'
restore database SMARTIT WITH RECOVERY
exec sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
SQL 2005 在排程出現型別轉換錯誤
作者:SmartIT 日期:2008-07-25 17:07
SQL 2005 在排程出現型別轉換錯誤時,需更新service pack 2 ,否則設定排程會出問題
SP 2 下載位置:http://www.microsoft.com/downloads/details.aspx?FamilyID=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&DisplayLang=zh-tw#filelist
SQL Server 2005 Service Pack 2 和 General Distribution Release 的安裝順序說明
SQL Server 2005 Service Pack 2 (以下稱為 SP2) 及 4 個 General Distribution Release (以下稱為 GDR)。本文依照這些 Release 的安裝順序來作說明。
| • | 921896 在 SQL Server 2005 Service Pack 2 已修正錯誤的清單 |
| • | 933508 Microsoft SQL Server 2005 Service Pack 2 問題:清除工作未在排定的時間間隔執行 |
| • | 934458 修正:在某些情況下在組建 3042 3053 透過 SQL Server 2005 的完整性檢查工作與 「 維護計劃中執行 T - SQL 陳述式工作會喪失資料庫內容」 |
| • | 933097 可用於 SQL Server 2005 Service Pack 2 (build 3152) 累積發佈的 Hotfix 套件 |
| • | 934459 修正:在某些情況下組建 3150 3158 透過 SQL Server 2005 資料庫內容的完整性檢查工作與 「 維護計劃中執行 T - SQL 陳述式工作會喪失資料庫內容」 |
本文出自: http://www.microsoft.com/taiwan/sql/sp2_gdr_install.mspx
重整SQL Log的Command
作者:SmartIT 日期:2008-07-25 10:28
以下是重整SQL交易紀錄檔的Command
可有效壓縮交易紀錄檔的容量
跟大家分享
1.截斷交易記錄檔
BACKUP LOG '資料庫名稱' WITH TRUNCATE_ONLY
2.顯示資料庫檔案,找出交易記錄檔的邏輯檔名
EXEC sp_helpdb '資料庫名稱'
3.壓縮交易記錄檔
DBCC SHRINKFILE('ldf的檔案名稱',2)-2的意思為2MB
範例:
以下就是可以將SmartIT資料庫的交易記錄檔縮小為2MB
BACKUP LOG SmartIT WITH TRUNCATE_ONLY
exec sp_helpdb SmartIT
DBCC SHRINKFILE('SmartIT_Log',2) --SmartIT_Log 為交易記錄檔名稱,此Command執行後,只會剩下2MB
另一個強制清除交易紀錄檔的設定
use DB_Name
Backup Log DB_Name with TRUNCATE_ONLY
dbcc shrinkfile (DB_Name_log , truncateonly)
執行Backup Log with Truncate_Only 其用法是備份資料庫的Log檔,由於我們在上述語法中沒有指定備份的裝置為何,Sql Server即會認
為此動作為單純要把已交易完成的Log資料清空(已交易完成的資料所指即為已commit的資料),而Truncate_Only的選項則是告訴Sql Server
目的在清空Log之空間,至於清出的空間則由Sql Server管理,不還給OS。
Backup Log完成後,要再執行DBCC SHRINKFILE ,,{NOTRUNCATE | TRUNCATEONLY }
其作為為將資料的空間作重整及壓縮,類似硬碟重組的功能,FileName為指定要壓縮的資料檔名(在Enterprise選擇資料庫按右鍵選內容,選交易紀錄檔的Tag即可看
到檔案名稱),TargetSize指的是要將資料壓縮至多少MB(假設檔案有10MB,TargetSize指定8MB,則原檔案最後2MB的資料會被搬移至前面的8MB存放,
而至少空出2MB的空間)。NOTRUNCATE指的是空出來的空間供Sql Server使用不還給OS,TRUNCATEONLY就是空出的空間還給OS。

