2012年5月15日 星期二

如何透過SmartIT查詢用戶端local administrator group成員?


1.重新執行【SmartIT Agent佈署精靈】

2.勾選【啟動命令或檔案擷取】輸入net localgroup administrators













3.重新佈署後,進入Console【電腦清單\編輯\檔案擷取資訊】查看



SQL Server SA密碼忘記,如何修改?


1.進入【SQL Server Management Studio】以Windows驗證登入

2.【安全性\登入】在sa上點擊兩次即可修改原密碼

    
   **修改sa密碼後需要注意以下延伸性問題

   1.SmartIT Server資料庫連線

   2.各IT的SmartIT Console資料庫連線

   3.Windows排程中各工具的資料庫連線







為什麼我可以登入Console ,但開啟報表中心會出現錯誤訊息? THE FOLLOWING error(s)have occurred: [DBNETLIB][ConnectionOpen(Invalid Instance().]無效的連線


1.請到Console【設定\資料庫變更】

2.資料庫伺服器輸入Ex:DB Server IP (xx.xx.xx.xx,Port)









想要把SmartIT安裝到C:\Program Files,如何設定參數?


1.打開佈署資料夾(預設Install)

2.編輯Install.bat 加入參數【-destination C:\Progra~1】













註1: Program Files = Progra~1
註2: Program Files (x86) = Progra~2



為何使用工具(ITDriveDeviceName),在Domain User的權限下執行無法判讀?


因為我們抓取的路徑為HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet

網域使用者權限無法查看機碼,所以判讀錯誤


如何使用SmartIT刪除用戶端不要的機碼?

1.請進入Console【電腦清單】選擇相同作業系統並且需刪除機碼的電腦

2.選擇左方功能列【執行命令】

3.執行指令請輸入需刪除正確位置

REG DELETE HKLM\SOFTWARE\Lightstar\DaddyCare /f

4.選擇【系統權限】執行

網址禁用如何修改禁用圖片?


1. 請修改佈署路徑(預設) C:\Install\webdeny.html

2. 將公司圖檔放置於公共資料夾中

3. 修改<body>….</body>內的文字
<p align="center" class="style4"><img src=\\xx.xx.xx.xx\LOGO\logo.png></p>
Img src =後面加入圖檔存放位置

4. 請修改佈署路徑(預設) C:\Install\ITClient.ini
Version=7.1.10.903  ⇒多加個字串 EX: 7.1.10.903A
;佈署版本

5. 重新佈署

2012年5月11日 星期五

簡易設定排程清除SQL 2008資料庫交易紀錄檔


如果要設定排程清除SQL 2008資料庫的交易紀錄檔,
除了將資料庫模式改為簡單

還可以設定排程執行下面指令即可

DBCC SHRINKFILE (SmartIT_log , 2)
--將交易記錄檔的大小壓縮到指定的大小

若資料庫為完全摸式,可使用下列排程設定來完成清除動作
==================================
USE [master]
ALTER DATABASE  DBName SET RECOVERY SIMPLE WITH NO_WAIT
USE DBName
DBCC SHRINKFILE (N’ DBName_log’, 0,TRUNCATEONLY)
USE [master]
ALTER DATABASE DBName SET RECOVERY FULL WITH NO_WAIT
ALTER DATABASE  DBName SET RECOVERY FULL  
================================== 
*DBName為SmartIT 資料庫名稱,DBName_log 為SmartIT DB 交易紀錄檔名稱 
*之前適用在SQL2000SQL2005的指令在SQL2008上不適用
可以改此指令即可,給大家參考。

02/24 SmartIT 2151版本更新記錄


-ITConsole(需搭配同版號或更新的SmartIT Server)

修改 開啟檔案加解密記錄功能
修改 Grid右鍵>show find panel /hide auto filter row 未套語言檔問題
修改 DelServerLog.exe >點擊bat檔後 停止運作問題
修改 將電腦由待確認清單移回電腦清單中時,提示數量超過授權數量時伺服器會停止運作問題
修改 DBCreator執行會出錯,找不到MSNSharp.dll問題
修改 報表修改, IAD026 拿掉採購編號,維護廠商,資料顯示錯誤,IAD031使用者對應錯誤
修改 報表修改,1.CID015,溢位問題。
修改 報表修改,IAS004資料顯示錯誤。授權且已安裝軟體統計(Group By 組織/授權軟體)
修改 報表修改,BDI003.fr3,1.無資料顯示問題,2.安裝非法定義: i.不勾選未分類安裝未授權軟體 ii.勾選未分類安裝未授權軟體 + 安裝未歸類到虛擬群組軟體
修改 報表修正,BDI011.fr3軟體變更明細表,1.增加”安裝日期”欄位此為電腦安裝此軟體的時間
修改 生命週期中設定關聯電腦時,電腦名稱要可以輸入搜尋
修改 原則套用時,沒有儲存禁用螢幕擷取功能設定問題

-ITServer


新增 DelServerLog.exe, DelServerLog.bat清除記錄檔的Console程式
更新 importdata7.2.12.02091版本
修改 v_rpt_orguser在sql2000建立會錯誤問題
修改 ITFD,ITDecode,ITID,ITUD,log記錄裏面的使用者及使用者組織由保管人改為以loginid取得目前使用者
修改 裝置禁用唯讀時,不發警示
修改 在smarit主表有異動時不更新關聯電腦的資產編號,並且不啟用/停用assets_UpdateSmartit
修改 警示發送設定,有勾啟用各別磁碟警示且有勾選才發警示
修改 ITWD當排程是個別磁碟的話,警示設定的排程警示郵件不會發送問題
修改 tri_smartit_asset_upd,在smarit主表有異動會一併更新關聯電腦的資產編號
修改 ITER,套用稽核設定時,沒有套用ptrsc禁用設定問題


-ITLiense

配合版號更新


-ITClient


新增 網頁稽核紀錄 Google Chrome Support 15 or 16 版
新增 可透過 Console 安全原則之螢幕擷取功能下達,讓管理端遠端遙控時,可記錄 遠端遙控過程之畫面
新增 支援 QQ2011 正式版本 &  Q+
新增 可禁用 "Skype 5.5 的桌面分享" ,此功能歸納於 即時通訊檔案傳輸禁止功能
修改 網頁稽核紀錄 Google Chrome 抓取的標題與網址對應錯誤問題
修改 網頁稽核紀錄 發生 Exception Log 後而無法後續記錄問題
修改 資產擷取之 軟體安裝日期正確性
修改 Agent Tray Icon 只顯示主版本資訊
修改 資產擷取時 InvInfo.ls 抓取 usbid ,有可能抓取到 尾碼多一個零的狀況
修該 AppM 有可能出現 index out of bound Log, 錯誤
修改 修改 InvNT.ls 在某些電腦有可能發生記憶體 Error 影響到無法禁用問題
修改 7.2.11.1024 Vista OS 以上 Agent 採 Service Mode 所產生的 Bug , 每六秒不停重覆寫 Log
修改 遠端遙控功能, Console 端斷線時,Client 端 ITRCS.exe( 33520 port )應該要停止服務
修改 再次修正 ITSetup.exe 無法更新 ITCurUsr.exe 的狀況
修改 某些大拇哥 之USBID  抓取不正確而遭到禁用問題
修改 資產擷取模組 在少數電腦會無法順利抓取問題
修改 InvDev.ls 執行效能
修改 ITSoftRI 增加派送成功率

SQL Server Express資料庫維護


由於Microsoft SQL Server Express 版本無法使用SQL Agent 排程,且SQL 2005 Server 會有4G 容量上限的限制,因此必須使用手動方式整理資料庫,或是使用此排程來操作,此設定需搭配Windows 排程來執行,當然也可以手動執行

介紹說明: 
一、將批次檔寫好放在固定位置不會被刪除 

二、將要執行的SQL Script 放置與批次檔同一個資料夾中,並確認是否正確

三、設定Windows 排程,執行批次檔
四、驗證排程是否可正常執行
五、排程1 「超過三十天的紀錄移轉至歷史紀錄」六、排程2 「將歷史記錄移到其他資料庫」


一、將批次檔寫好放在固定位置不會被刪除 

批次檔案內容說明如下
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
@echo off
"C:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe" ‐S 127.0.0.1 ‐Usa ‐Pkeepout ‐i
D:\backup_full.sql ‐o D:\backup_full.log
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
(1) 先檢查 sqlcmd.exe 程式放在哪個位置
(2) 再將程式路徑複製出來,如果路徑中有空格,需要在前後加雙引號。
(3) –S 後面請加上SQL Server 的IP 位置
(4) –U 後面請加上SQL Server 的帳號。
(5) –P 後面請加上SQL Server 該帳號的密碼。
(6) –i 後面為要執行的SQL Script 語法與存放路徑。
(7) –o 後面為執行後所產生的log 放置的地方與檔名。
*批次檔範例下載backup.zip (248 Byte ,下載:39次)
==========================================================  

二、將要執行的SQL Script 放置與批次檔同一個資料夾中,並確認是否正確  
註:文中所有之DB_Name,意指SmartIT之資料庫名稱,標記紅色字體為可變更。
說明: 
將需要執行的SQL Script 放入與批次檔同一個資料夾中,方便管理與維護。
每一個SQL Script 都建一個批次檔來執行,目的是希望每個排程都按照指定時間執行,並且不是每個排程都需要每天做,所以分開執行最好。
這裡建議幾個常用的Script,提供參考。
1、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,意指備份路徑及備份檔案名稱
2、清除交易紀錄檔
-----------------------------------------清除交易紀錄檔-----------------------------------------
use DB_Name
Backup Log  DB_Name with TRUNCATE_ONLY
dbcc shrinkfile ( DB_Name_log , 2)
-----------------------------------------清除交易紀錄檔-----------------------------------------
3、資料庫壓縮
-----------------------------------------資料庫壓縮-----------------------------------------
DBCC SHRINKDATABASE ( DB_Name, 10)
-----------------------------------------資料庫壓縮-----------------------------------------
4、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,意指備份路徑及備份檔案

========================================================== 
三、 設定Windows 排程,執行批次檔 
設定Windows 排程希望能由系統每天自動處理,減少人工操作部分
(1)、開啟Windows 排程,選擇[新增排定的工作]啟動視窗後再選擇[下一步]

(2)、選擇要執行的程式後,點選[下一步]

(3)、選擇批次檔的名稱,在按下[開啟]

(4)確認排程名稱後,選擇執行方式,再按[下一步]

(5)確認執行時間後,在點選[下一步]

(6)輸入擁有可執行權限的帳號密碼後,點選[下一步]
(7)完成設定,點選[完成]按鈕

(8)設定完成後,開啟排程,並將設定頁面中,在?小時後停止排成的選項,取消勾選
完成後點選套用結束畫面


==========================================================  
四、 驗證排程是否可正常執行
完成排成設定後可按滑鼠右鍵,選擇[執行]來啟動排程,確認排程是否可執行完畢。

==========================================================   
五、排程1 「超過三十天的紀錄移轉至歷史紀錄」

-----------------------------------------移轉排程-----------------------------------------------

/* 1.網站稽核 */

DELETE FROM url_audit_history
WHERE  (url_audit_history_key IN
           (SELECT url_audit_key
            FROM  url_audit
            WHERE substring(audit_date, 1, 8) < Cast(CONVERT(Varchar(8), GetDate() -30, 112) AS varchar)))
INSERT INTO url_audit_history
SELECT  *
FROM    url_audit
WHERE (SUBSTRING(audit_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() -30,112) AS varchar))

delete from url_audit
where substring( audit_date, 1, 8) < Cast( Convert(Varchar(8), GetDate()-30,112) AS varchar)

/* 2.軟體變更 */
DELETE FROM software_change_history
WHERE (software_change_history_key IN
        (SELECT software_change_key
            FROM  software_change
            WHERE substring(change_date, 1, 8) < Cast(CONVERT(Varchar(8), 
                           GetDate() -30, 112) AS varchar)))
INSERT INTO software_change_history
SELECT   *
FROM    software_change
WHERE   (SUBSTRING(change_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() -30,112) AS varchar))

DELETE FROM software_change
WHERE   (SUBSTRING(change_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() -30,112) AS varchar))

/* 3.系統變更 */
DELETE FROM system_change_history
WHERE  (system_change_history_key IN
         (SELECT  system_change_key
           FROM  system_change
           WHERE  substring(audit_date, 1, 8) < Cast(CONVERT(Varchar(8), GetDate() - 30, 112) AS varchar)))
INSERT INTO system_change_history
SELECT   *
FROM    system_change
WHERE   (SUBSTRING(audit_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,112) AS varchar))
DELETE FROM system_change
WHERE   (SUBSTRING(audit_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,112) AS varchar))

/* 4.應用程式使用率 */
DELETE FROM appusage_history
WHERE (serial IN
      (SELECT serial
        FROM  appusage
        WHERE substring(uses_date, 1, 8) < Cast(CONVERT(Varchar(8), GetDate() - 30, 112) AS varchar)))
INSERT INTO appusage_history
SELECT         *
FROM    appusage
WHERE  (SUBSTRING(uses_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,112) AS varchar))
DELETE FROM appusage
WHERE  (SUBSTRING(uses_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,112) AS varchar))

/* 5.USB檔案稽核記錄  */
DELETE FROM files_audit_log_history
WHERE  (files_audit_log_history_key IN
       (SELECT  files_audit_log_key
         FROM  files_audit_log
         WHERE  substring(affect_date, 1, 8) < Cast(CONVERT(Varchar(8), GetDate()  - 30, 112) AS varchar)))
INSERT INTO files_audit_log_history
SELECT   *
FROM    files_audit_log
WHERE  (SUBSTRING(affect_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,112) AS varchar))
DELETE FROM files_audit_log
WHERE  (SUBSTRING(affect_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,112) AS varchar))

/* 6.管理端稽核記錄  */
DELETE FROM manage_change_log_history
WHERE (manage_change_log_history_key IN
        (SELECT    manage_change_key
         FROM     manage_change
          WHERE   substring(inventory_change_date, 1, 8)  < Cast(CONVERT(Varchar(8), GetDate() - 30, 112) AS varchar)))
INSERT INTO manage_change_log_history
SELECT  *
FROM     manage_change
WHERE  (SUBSTRING(inventory_change_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30, 112) AS varchar))
DELETE FROM manage_change
WHERE  (SUBSTRING(inventory_change_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30, 112) AS varchar))

/* 7.印表機列印記錄 */
DELETE FROM print_log_history
WHERE  (print_log_history_key IN
       (SELECT  print_log_key
        FROM    print_log
        WHERE  substring(print_time, 1, 8) < Cast(CONVERT(Varchar(8), GetDate()  - 30, 112) AS varchar)))
INSERT INTO print_log_history
SELECT   *
FROM     print_log
WHERE   (SUBSTRING(print_time, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30, 112)  AS varchar))
DELETE FROM print_log
WHERE   (SUBSTRING(print_time, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30, 112)  AS varchar))

/* 8.系統稽核記錄 */
DELETE FROM system_audit_log_history
WHERE   (system_audit_log_history_key IN
        (SELECT   system_audit_log_key
         FROM     system_audit_log
          WHERE   substring(audit_date, 1, 8) < Cast(CONVERT(Varchar(8), GetDate()   - 30, 112) AS varchar)))
INSERT INTO system_audit_log_history
SELECT   *
FROM    system_audit_log
WHERE   (SUBSTRING(audit_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,  112) AS varchar))
DELETE FROM system_audit_log
WHERE   (SUBSTRING(audit_date, 1, 8) < CAST(CONVERT(Varchar(8), GETDATE() - 30,  112) AS varchar))

-----------------------------------------移轉排程-----------------------------------------------

建議設定方式:
資料庫移轉排程通常為開啟多項稽核時進行設定。大量時則可設定一個月一次,在週六或週日執行比較不影響效能。

========================================================== 
六、排程2 「將歷史紀錄移到其他資料庫」

說明:
使用下列指令可以將歷史紀錄移轉至其他資料庫做資料存放

-------------------------- DB 資料移轉-----------------------------
/* 1.網站稽核 */
DELETE FROM  Backup_DB_Name.dbo.url_audit_history  --目的DB
WHERE  ( Backup_DB_Name.dbo.url_audit_history.url_audit_history_key IN  --目的DB比對值
           (SELECT  DB_Name.dbo.url_audit_history.url_audit_history_key  --來源DB比對值
            FROM   DB_Name.dbo.url_audit_history ))  --來源DB
INSERT INTO  Backup_DB_Name.dbo.url_audit_history  --目的DB
SELECT  * FROM     Backup_DB_Name.dbo.url_audit_history  --來源DB
DELETE FROM  Backup_DB_Name.dbo.url_audit_history  --來源DB

/* 2.應用程式使用率  */
DELETE FROM  Backup_DB_Name.dbo.appusage_history  --目的DB
WHERE ( Backup_DB_Name.dbo.appusage_history.serial IN  --目的DB比對值
      (SELECT  DB_Name.dbo.appusage_history.serial  --來源DB比對值
        FROM   DB_Name.dbo.appusage_history))  --來源DB
INSERT INTO  Backup_DB_Name .dbo.appusage_history  --目的DB
SELECT * FROM  DB_Name .dbo.appusage_history  --來源DB
DELETE FROM  DB_Name .dbo.appusage_history  --來源DB

/* 3.印表機列印記錄    */
DELETE FROM  Backup_DB_Name.dbo.print_log_history  --目的DB
WHERE  ( Backup_DB_Name.dbo.print_log_history.print_log_history_key IN  --目的DB比對值
       (SELECT   DB_Name.dbo.print_log_history.print_log_history_key  --來源DB比對值
        FROM     DB_Name.dbo.print_log_history ))  --來源DB
INSERT INTO  Backup_DB_Name.dbo.print_log_history  --目的DB
SELECT  * FROM   DB_Name.dbo.print_log_history  --來源DB
DELETE FROM  DB_Name.dbo.print_log_history  --來源DB

/* 4.軟體變更  */
DELETE FROM  Backup_DB_Name.dbo.software_change_history  --目的DB
WHERE ( Backup_DB_Name.dbo.software_change_history.software_change_history_key IN  --目的DB比對值
        (SELECT  DB_Name.dbo.software_change_history.software_change_history_key  --來源DB比對值
            FROM   DB_Name.dbo.software_change_history))  --來源DB
INSERT INTO  Backup_DB_Name.dbo.software_change_history  --目的DB
SELECT * FROM  DB_Name.dbo.software_change_history  --來源DB
DELETE FROM  DB_Name.dbo.software_change_history  --來源DB

/* 5.系統變更  */
DELETE FROM  Backup_DB_Name.dbo.system_change_history  --目的DB
WHERE  ( Backup_DB_Name.dbo.system_change_history.system_change_history_key IN  --目的DB比對值
         (SELECT  DB_Name.dbo.system_change_history.system_change_history_key  --來源DB比對值
           FROM   DB_Name.dbo.system_change_history))  --來源DB
INSERT INTO  Backup_DB_Name.dbo.system_change_history  --目的DB
SELECT * FROM  DB_Name.dbo.system_change_history  --來源DB
DELETE FROM  DB_Name.dbo.system_change_history  --來源DB

/* 6.管理端稽核記錄   */
DELETE FROM  Backup_DB_Name.dbo.manage_change_log_history  --目的DB
WHERE ( Backup_DB_Name.dbo.manage_change_log_history.manage_change_log_history_key IN  --目的DB比對值
        (SELECT   DB_Name.dbo.manage_change_log_history.manage_change_log_history_key  --來源DB比對值
         FROM    DB_Name.dbo.manage_change_log_history))  --來源DB
INSERT INTO  Backup_DB_Name.dbo.manage_change_log_history  --目的DB
SELECT * FROM  DB_Name.dbo.manage_change_log_history  --來源DB
DELETE FROM  DB_Name.dbo.manage_change_log_history  --來源DB

/* 7.即時通訊稽核 */
DELETE FROM  Backup_DB_Name.dbo.imlog_history  --目的DB
WHERE  ( Backup_DB_Name.dbo.imlog_history.serial IN  --目的DB比對值
           (SELECT  DB_Name.dbo.imlog_history.serial  --來源DB比對值
            FROM   DB_Name.dbo.imlog_history ))  --來源DB
INSERT INTO  Backup_DB_Name.dbo.imlog_history  --目的DB
SELECT  * FROM   DB_Name.dbo.imlog_history  --來源DB
DELETE FROM  DB_Name.dbo.imlog_history  --來源DB

/* 8.USB檔案稽核 */
DELETE FROM  Backup_DB_Name.dbo.files_audit_log_history  --目的DB
WHERE  ( Backup_DB_Name.dbo.files_audit_log_history.files_audit_log_history_key IN  --目的DB比對值
       (SELECT   DB_Name.dbo.files_audit_log_history.files_audit_log_history_key  --來源DB比對值
         FROM    DB_Name.dbo.files_audit_log_history ))     --來源DB
INSERT INTO  Backup_DB_Name.dbo.files_audit_log_history --目的DB
SELECT * FROM   DB_Name.dbo.files_audit_log_history   --來源DB
DELETE FROM   DB_Name.dbo.files_audit_log_history    --來源DB 

-------------------------- DB 資料移轉-----------------------------
*DB_Name,意指SmartIT來源資料庫名稱*Backup_DB_Name,意指備份用的目的地資料庫名稱 

==========================================================

SQL Server 資料庫維護


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、備份

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Web Hosting Bluehost