2009年7月23日 星期四

SQL Server資料庫維護與備份設定

SQL Server資料庫維護與備份設定
建議使用SQL Server內建的維護計畫,可快速設定最基本的SQL Server維護作業
建議建立2個維護計畫,如下說明:

1.系統資料庫(master,msdb,model)
最少每星期完整備份1次
備份前作資料庫完整性檢查

PS.若做了以下動作則建議手動備份一次master
(1)對Instance層級作了組態調整設定
(2)新增個一個資料庫
(3)新增了連線Login帳戶
PS.若在SQL Agent新增一個排程工作,則建議手動備份一次msdb

2.使用者資料庫(應用系統所使用的資料庫)
備份方式與排程時間需視資料庫大小,資料庫性質而定
以中大型大小的線上交易系統資料庫為例可考慮以下列方式執行:
(1)每個星期日完整備份,備份前先做資料庫完整性檢查,再作索引重建,最後才做完整備份。
(2)星期一到星期六可排差異備份,效能不好時可以考慮差異備份前也作索引重建。
(3)每天2到3次的交易紀錄檔備份,例如08:00,13:00,18:00,若要減少資料遺失時間,可以每個小時執行1次,再短一點的話可以縮到每 15 到 30 分鐘進行一次交易記錄檔備份可能就足夠了。

2009年7月22日 星期三

對(Windows排程器)排定的工作開權限給特定的群組

1.將C:\Windows\tasks目錄權限開放給指定群組mytaskmgr可以讀取
C:\cacls c:\Windows\tasks /E /G mytaskmgr:R

2.將指定的排定工作開權限給指定群組mytaskmgr可以修改
開始->控制台->排定的工作
在指定的工作上按右鍵->內容->安全性
將mytaskmgr群組加入並給予修改的權限

3.以後加入mytaskmgr群組的User就可以修改此排程工作並執行此排程工作

Security權限設定Modify ACL Permission with cacls command(cacls與xcacls命令的使用)

Example:
C:\cacls c:\temp /E /G "Domain Users":R Users:R /R Everyone

/e Edit ACL instead of replacing it.
/g user|group:perm Grant specified user or group access permissions.
perm can be:
r Read
c Change (write)
f Full control
/r user Revoke specified user's or group's access permissions.
/p user|group:perm Replace specified user's or group's access permissions.
perm can be:
n None
r Read
c Change (write)
f Full control

[Reference]
Undocumented CACLS: Group Permissions Capabilities
http://support.microsoft.com/kb/162786/en-us


How to Use CACLS.EXE in a Batch File
http://support.microsoft.com/kb/135268

Microsoft Technet - Command-line reference - Cacls
http://technet.microsoft.com/en-us/library/bb490872.aspx

How to use Xcacls.exe to modify NTFS permissions
http://support.microsoft.com/kb/318754

2009年7月17日 星期五

Apply Group Policy Error Event ID 1058,1030

套用群組原則後發現Event Log有錯誤ID是1058與1030
C:\gpupdate /force



















解決方法可以下命令清除Mup Cache
C:\dfsutil /PurgeMup

2009年7月8日 星期三

如何暫停Script,等待使用者按下任意鍵後才繼續

[VBScript]
strMessage = "Press the ENTER key to continue. "
Wscript.StdOut.Write strMessage

Do While Not WScript.StdIn.AtEndOfLine
Input = WScript.StdIn.Read(1)
Loop
WScript.Echo “The script is complete.”

[MS-DOS Batch file]
echo off
pause
echo The batch file is complete.

[REFERENCE]
How Can I Pause a Script and Then Resume It When a User Presses a Key on the Keyboard?

2009年7月7日 星期二

使用統計資料來改善查詢效能-節錄SQL Server 2008 線上叢書-Technet Library

使用統計資料來改善查詢效能
http://technet.microsoft.com/zh-tw/library/ms190397.aspx

在下列狀況中,請考慮更新統計資料:

(1)查詢執行時間很慢
如果查詢回應時間很慢或無法預測,請先確定查詢具有最新的統計資料,然後再執行其他疑難排解步驟。如需有關疑難排解查詢執行緩慢的詳細資訊,請參閱<分析執行緩慢之查詢的檢查清單>。

(2)插入作業針對遞增或遞減索引鍵資料行進行
遞增或遞減索引鍵資料行 (例如 IDENTITY 或即時時間戳記資料行) 之統計資料所需的統計資料更新頻率可能會比查詢最佳化工具所執行的更新頻率更高。插入作業會將新的值附加至遞增或遞減資料行。所加入的資料列數目可能會太小,而無法觸發統計資料更新。如果統計資料不是最新的,而且查詢會從最近加入的資料列中選取,則目前的統計資料將不會具有這些新值的基數估計值。這可能會導致基數估計值不精確以及查詢效能緩慢。

例如,如果統計資料沒有更新成包含最新銷售訂單日期的基數估計值,則從最新銷售訂單日期中選取的查詢就會具有不精確的基數估計值。

(3)在維護作業之後
在執行變更資料分佈的維護程序 (例如截斷資料表或針對大部分的資料列執行大量插入) 之後,請考慮更新統計資料。這樣做可在查詢等候自動統計資料更新時,避免未來查詢處理產生延遲。

重建、重組或重新組織索引等作業都不會變更資料的分佈。因此,在執行 ALTER INDEX REBUILD、DBCC REINDEX、DBCC INDEXDEFRAG 或 ALTER INDEX REORGANIZE 作業之後,您不需要更新統計資料。當您使用 ALTER INDEX REBUILD 或 DBCC DBREINDEX 來重建資料表或檢視表的索引時,查詢最佳化工具就會更新統計資料。不過,這種統計資料更新是重新建立索引的副產品。在 DBCC INDEXDEFRAG 或 ALTER INDEX REORGANIZE 作業之後,查詢最佳化工具則不會更新統計資料。

[Action]
-- 更新資料庫的所有統計資料
EXEC sp_updatestats
--若要判斷上次更新統計資料的時間,請使用 STATS_DATE 函數。
--http://technet.microsoft.com/zh-tw/library/ms173804.aspx


--針對 SalesOrderDetail 資料表的所有索引更新統計資料。
--複製程式碼
USE AdventureWorks;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO
http://technet.microsoft.com/zh-tw/library/ms187348.aspx

2009年7月6日 星期一

用命令管理Windows帳戶net user Command

Net User命令
net user [username [password | *] [options]] [/domain]
username {password | *} /add [options] [/domain]
username [/delete] [/domain]

[範例1]
新增一個Brad帳戶,按下enter後才會提示輸入密碼
C:\net user Brad * /add /fullname:"Brad Chen" /comment:"This is a admin users"
請輸入使用者的密碼:

[範例2]
新增一個Brad帳戶,指定密碼為BradsPasswd並給予全名與描述
C:\net user Brad BradsPasswd /add /fullname:"Brad Chen" /comment:"This is a admin users"

[參考]
How to Use the Net User Command
http://technet.microsoft.com/en-us/library/bb490718.aspx

[補充]
如何用命令列設定密碼永遠有效

設定帳戶密碼永遠有效Password never expired

使用net user新增帳戶後想一併設定密碼永遠有效,
終於找到方法,不過要多學一種WMIC的命令

本機帳戶Local Account
C:\WMIC USERACCOUNT WHERE "Name='LocalUserName'" SET PasswordExpires=FALSE

網域帳戶Domain Account
C:\WMIC USERACCOUNT WHERE "Name='DomainUserName' and domain='DomainName'" SET PasswordExpires=FALSE

[補充]
用命令管理Windows帳戶net user Command

2009年7月1日 星期三

Windows Vista與Windows 2008 Service Pack 2

今天Vista檢查到有更新是Vista Service Pack 2,索性到微軟官網直接下載獨立安裝檔

微軟官網下載網址
[x86]
KB948465:Windows Server 2008 Service Pack 2 與 Windows Vista Service Pack 2 - 所有語言獨立
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=891ab806-2431-4d00-afa3-99ff6f22448d

[x64]
KB948465:Windows Server 2008 Service Pack 2 與 Windows Vista Service Pack 2 - 所有語言獨立 (適用於 x64 系統)
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=8ad69826-03d4-488c-8f26-074800c55bc3

SQL Server Database Mirroring 資料庫鏡像

SQL Server Database Mirroring 資料庫鏡像