2015年1月7日 星期三

MVA學習筆記:SQLServer例行管理

MVA連結

每日檢核項目:

檢核記錄檔:


  • SQLServer錯誤記錄檔
  • WindowsServer事件檢視器
  • 硬體異常記錄
  • 排程作業是否正常
  • 效能記錄檔
  • 是否raid硬碟故障

每週檢核項目:

確認備份檔案可用性


作業系統、SQLServer、應用程式更新

SQLServer Management Studio報表

資料庫交易記錄檔是否異常成長

每月檢核項目:

  • 執行備份還原演練
  • 變更管理
  • DBCC檢查
  • 容量規劃/基準比較
  • 健全狀況
  • 改善計劃

可利用SP快速查詢LOG

  • exec sp_readerrorlog
  • 參考連結
  • exec xp_readerrorlog
  • sp_readerrorlog的底層一樣是使用xp去作業,但多了一個權限的限制。
  • sp_cycle_errorlog-關閉目前記錄檔,重新開始。

可以利用Power Shell來取得LOG

  • # 取得在 2014-07-01 之後的事件檢視器內的 Application Event Log  
  • #get-eventlog -logname Application -After "2014-08-01"

  • # 只取 SQL Server 的訊息
  • #get-eventlog -logname Application -After "2014-08-01" -Source "MSSQLSERVER"

  • # 只取 SQL Server 的錯誤訊息 
  • get-eventlog -logname Application -After "2014-07-01" -Source "MSSQLSERVER"  -EntryType "Error"

  • # 存到 CSV 檔案內
  • get-eventlog -logname Application -After "2014-08-01" -EntryType "Error" -Source "MSSQLSERVER" |
  • export-csv -Path C:\TEST.csv -NoTypeInformation -Encoding "unicode"

軟硬體執行環境分析

  1. 電源管理:透過電源管理可以避免CPU自動降頻。
  2. 硬體效能:CRYSTALDISKMARK
  3. 效能監視器:轉出CSV之後透過分析表來分析。
  • 2008以前執行『performance monitor』
  • 2008之後在伺服器管理員的診斷\效能

索引維護

  • 只要對基礎資料進行CURD作業,SQLSERVER會自動維護索引,但過一段時間之後,這些修改就可能使索引中的資訊變成散佈於資料庫中,當根據索引鍵值的邏輯順序頁面與資料檔中的實體順序不相符時,就會有片段產生。
  • 片段嚴重的索引可能會造成查詢效能降低並使回應變慢。
  • sys.dm_db_index_physical_stats取得相關資訊。
SELECT
OBJECT_NAME(s.object_id) tablename, i.name indexname,
index_type_desc,index_level, avg_fragmentation_in_percent,avg_page_space_used_in_percent, page_count

FROM sys.dm_db_index_physical_stats(DB_ID(N‘資料庫名稱'), NULL, NULL, NULL , 'SAMPLED') s
JOIN sys.indexes i ON s.object_id = i.object_id and s.index_id = i.index_id
ORDER BY avg_fragmentation_in_percent DESC

  • 利用維護計劃來做索引維護
  • 可以透過指令來針對部份TABLE做索引重建
  • 透過報表可以看索引實體統計資料瞭解索引狀況。
  • Fragmentation>30,建議重建索引。5~30選擇重新組織索引。
  • 重建索引時,索引保留在線上<-這功能只有在Enterprise版本才有支援。


2014年4月24日 星期四

Webapi-CORS實作

參考來源1:http://www.dotblogs.com.tw/joysdw12/archive/2013/05/25/web-api-cors.aspx
參考來源2:http://blog.kkbruce.net/2013/05/aspnet-web-api-cors-preview-full-featured-profiling.html
最後採用:使用 Thinktecture.IdentityModel 套件實作 CORS
即參考來源1。
不過還是有讀一下kkbruce老師的說明。
延伸閱讀:http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/

2014年3月19日 星期三

WebApi-強制格式為json

教學來源:保哥 連結
Global.asax 檔案的 Application_Start() 事件裡加入語法
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear()
感謝保哥教學。

WEBAPI筆記-不需要資料合約名稱為

參考來源:
http://readily-notes.blogspot.tw/2014/01/aspnet-mvc-4-webapi-northwind-controller.html
錯誤原因:
不需要資料合約名稱為 'Employees_14BF9F9F0C1DAB0594B23F2EB7695ECA92DD0B880DFF02A4CD9698A2DADBA635:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' 的型別 'System.Data.Entity.DynamicProxies.Employees_14BF9F9F0C1DAB0594B23F2EB7695ECA92DD0B880DFF02A4CD9698A2DADBA635'。請考慮使用 DataContractResolver,或將任何不明的型別新增到已知型別清單 - 例如,可以使用 KnownTypeAttribute 屬性,或將它們新增到會傳送給 DataContractSerializer 的已知型別清單。
解決方法:
在Model.Context.vb的Sub New()加入
 Me.Configuration.ProxyCreationEnabled = False
即可解決。
感謝前輩的教學,讓我可以繼續學習了。

2013年8月9日 星期五

筆記-jquery-checkbox是否勾選

<script src="js/jquery-1.2.6.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $.each($("input[type='checkbox']"), function() {
            if ($(this).is(':checked') == false) {
                $(this).css({
                'background': 'blue'
               
                });
            };
        });
    });
</script>
如果checkbox未勾選就讓背景是藍色。

2013年7月6日 星期六

ASP.NET-網頁按Enter自動跳上一頁

一、在畫面上放一個Button
二、在HTML設定該Button的OnClientClick="return false;"
三、在HTML設定該Button的style="display:none"
四、在Page_Load事件寫入  Me.Page.Form.DefaultButton = Button.UniqueID

這樣子,就可以避免在按下Enter之後亂執行事件了。

參考資料來源:網頁連結