2009年4月30日

[KB]如何讓DBA精準的掌握效能不好的網頁?

身為一個DBA,最痛恨的應該是知道某個網站效能不好,但是又苦於無法找出這個麻煩的網頁。

那要怎麼作才能達到這個需求?

 

在連線字串中,可以透過設定Applicaion Name,然後在SQL Profiler查到一些相關資訊:

1.

還沒加Application Name之前:

image

 

你會發現,當網頁連接時,Application Name因為是透過.Net SqlClient Data Provider來作連結,所以這邊顯示就是「.Net SqlClient Data Provider」。

 

2.

如果在連線字串(ConnectionString)加上Application Name呢?

"Data Source=localhost;Initial Catalog=MyTest;Integrated Security=True;Application Name=ERP"

image

 

只要在連線字串簡單的加上Application Name=系統名稱,SQL Server的DBA就可以比較輕鬆的找到發生問題的系統。

 

 

但是,如果想要更明白的知道是那個網頁發生問題,要怎麼處理?

   1:    Dim connStr As String = System.Configuration.ConfigurationManager.ConnectionStrings("MyTestConnectionString").ConnectionString


   2:   


   3:    Dim conn As New System.Data.SqlClient.SqlConnection(connStr & "&Page=Default")


   4:    Dim cmd As New System.Data.SqlClient.SqlCommand("SELECT * FROM [T1]", conn)


   5:    Dim da As New System.Data.SqlClient.SqlDataAdapter(cmd)


   6:    Dim dt As New Data.DataTable


   7:   


   8:    da.Fill(dt)


   9:   


  10:    GridView1.DataSource = dt


  11:    GridView1.DataBind()





在連線字串的處理中,我們多加了一個這個網頁的名稱,然後在SQL Server Profiler中就可以看到:



image



 



那如果是用DataSource當來源呢? 我們可以去它的selecting事件中處理(如果是Insert、Update、Delete事件,請在對應事件處理)




   1:   Protected Sub SqlDataSource1_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles SqlDataSource1.Selecting


   2:          e.Command.Connection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("MyTestConnectionString").ConnectionString & "&PageIsDefault"


   3:   


   4:  End Sub




 



image



 



那如果是用強型別的SQLDataAdapter呢?



可以透過Partial Class去處理:




   1:  Namespace DataSet1TableAdapters


   2:      Partial Class T1TableAdapter


   3:          Private _conn As System.Data.SqlClient.SqlConnection


   4:          Public Property MyConnStr() As System.Data.SqlClient.SqlConnection


   5:              Get


   6:                  Return _conn


   7:              End Get


   8:   


   9:              Set(ByVal value As System.Data.SqlClient.SqlConnection)


  10:                  Me._conn = value


  11:                  For Each cmd As Data.SqlClient.SqlCommand In Me.CommandCollection()


  12:                      If cmd IsNot Nothing Then


  13:                          cmd.Connection = _conn


  14:   


  15:                      End If


  16:                  Next


  17:                  If Me.Adapter.InsertCommand IsNot Nothing Then


  18:                      Me.Adapter.InsertCommand.Connection = _conn


  19:   


  20:                  End If


  21:                  If Me.Adapter.UpdateCommand IsNot Nothing Then


  22:                      Me.Adapter.UpdateCommand.Connection = _conn


  23:   


  24:                  End If


  25:                  If Me.Adapter.DeleteCommand IsNot Nothing Then


  26:                      Me.Adapter.DeleteCommand.Connection = _conn


  27:   


  28:                  End If


  29:              End Set


  30:          End Property


  31:      End Class


  32:  End Namespace





然後頁面上這樣呼叫:




   1:  Dim da As New DataSet1TableAdapters.T1TableAdapter


   2:    da.MyConnStr = New System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("MyTestConnectionString").ConnectionString & "&StrongPageIsDefault")


   3:   


   4:  GridView1.DataSource = da.GetData()


   5:  GridView1.DataBind()





 



image



 



 



透過這種方式,雖然在開發上會麻煩一點,但是在後續的管理上,可是會輕鬆許多,讓公司的SQL Server DBA可以比較好找到問題發生的網頁。



 



 



希望以上的資訊對您有所幫助。 ^^

2009年4月29日

[Info]免費的Windows 7電子書部份章節試讀

image

為了即將到來的Window 7 RC版,MS Press也釋出了Windows 7 Inside Out 電子書的部份章節:

 

  • Chapter 21, “Performing Routine Maintenance,” from Windows 7 Inside Out
  • Chapter 23, “Support Users and Remote Assistance,” from Windows 7 Resource Kit
  • Chapter 29, “Deploying IPv6,” from Windows 7 Resource Kit
  • Chapter 1, “Explore Windows 7,” from Windows 7 Step by Step
  • Chapter 2, “Navigate Windows and Folders,” from Windows 7 Step by Step

     

     

    有興趣的朋友可以去下載來看, 順便等待Windows 7 RC的到來...

    (有訂閱MSDN的朋友,在台灣時間5/1就可以下載到Windows 7 RC)

     

    下載網址:

    http://www.microsoft.com/learning/windows-7/default.mspx#BOOKS

     

  • 2009年4月26日

    [Game]這是個Bug很多的遊戲 - MLB2K9

    在TV Game的眾多種類中,我最喜歡玩的就是運動類,尤其又以NBA跟MLB的遊戲最為喜歡。

    當我知道MLB 2K9的消息後,便趕快到網站上預購,深怕不能第一時間跟Papi老爹在球場上擊落共匪米格機。

    image

     

    拿到手後,當然要玩的就是王朝季賽模式,你知道的,身為一個紅襪球迷,所使用的隊伍一定是紅襪隊。

    image

     

    基於同胞愛,我努力的搜尋台灣球員,用買低賣高的心態,把小王、小郭跟小胡都給找進來了。

    (我不會把用Penny加Smoltz換小王這種下流事講出去的)

     

    當小王交易到我這隊的時候,我發現小王竟然沒有速球。X! 洋基給了我一個山寨版的小王,沒有速球的小王,難道要我從頭Sinker到尾嗎?

    image

     

    事情如果發展到這裡,感覺還沒有很糟,接下去就更精彩了。

    隨著比賽的進行,有幾個傷兵也是很理所當然的事。我的松阪跟捕手隊長很快地在第兩、三場的比賽後就受傷了。

    進入DL的他們,彷彿被魔咒纏身,好像都好不了,整個球季都過了快一半了,60天的DL還是保持一樣。

    大概跑過兩輪了,原來這是個Bug,我上網查了一下,要解除這個Bug,就是在剩下最後一天的時候,下一場用模擬的。

    (我已經把松阪給解救出來了,隊長目前還在Loop中)

    image

     

    當然,這還不是最誇張的Bug,接下來這個Bug,實在很讓人無言。

    image

     

    看圖就知道了。

    image

     

    有沒有發現什麼?

    為什麼明星賽投票,SS第一名的票數是最少的?對,這個Bug就是在比票數時,竟然是比第一個數字....Orz

    我的媽阿,97萬票竟然贏220萬票,你說MLB有沒有收錢,還是220萬票的都是阿飄票?

    image

     

    其他的像是外野手追全壘打球會追到穿牆而過,然後在練投區接到以及外野手常常在站好位置後,突然眼睛被鬼遮眼而漏接,其他族繁不及備載。

    不過還好得是,XBOX 360會有更新檔...Orz (但是我練出的兩個大Bug還沒更新阿)

     

    2K,我實在猜不透你阿..

    [CookBook]台式豬肉丼飯

    今天不搞技術,我們來學煮菜。

     

    之前在Mobile01看到有善心人士分享如何作豬肉蓋飯,心裡一直蠢蠢欲動,很想自己動手試看看。

    跟著原創者的步驟,我們先準備好材料:

    image

     

    接下來就要開始了:

     

    將醬油倒入碗中,大約1/6,然後將鰹魚露也倒入碗中,也是1/6,然後加水加到滿。

    image

     

    接下來,我們拿出洋蔥,對,是洋蔥,我加了洋蔥,但是我們今天不是要作「黯然消魂飯」。

    image

     

    看這男人刀起刀落,洋蔥紋風不動,你就知道他還沒有發功。

    image

     

    在這個男人使用李逍遙的「萬劍歸一」招式後,洋蔥變成了這個樣。(叔叔有練過,小孩子不要學)

    image

     

    然後我們開火準備Fight了!

    開小火,放入一點沙拉油,千萬不要放成沙拉脫,今天我們不是要製作殺人武器。

    image

     

    熱鍋後,放入剛剛發功切好的洋蔥

    image

     

    如果家裡有奶油,記得放下去會更香。

    image

     

    炒阿炒,越炒越多...,這是支奇妙的鍋子。

    image

     

    過了約20秒,把剛剛的醬料倒進去

    image

     

    然後等到洋蔥煮到有點軟(據說,此時可以一邊聽任賢齊的「心太軟」,會軟的比較快)

    image

     

    當洋蔥漸軟的時候,此時就是豬肉上場的時候。 我彷彿看到豬肉在對我笑。

    image

     

    煮了幾分鐘,要等豬肉入味。

    image

     

    這時候可以趁機裝碗白飯。

    image

     

    身為專業的中國廚藝學院的院生,加兩顆雞蛋也是應該的。

    image

     

    在我鏟氣的導引下,蛋黃跟蛋白倉皇逃命。(有看到旁邊「鏟氣」的厲害了吧),此時也煮好了。

    image

     

    準備上菜。

    image

    image

     

    配碗紫菜湯去油解膩。

    image

     

     

     

    友情加贈:親子丼作法。

    材料如下:

    這裡的差別是把豬肉換成雞肉,然後再加杏鮑菇。

    (為啥要加杏鮑菇? 因為我吃完豬肉丼飯後,感覺很像壽喜燒,所以就加上壽喜燒最愛加的杏鮑菇)

    (如果可以,雞肉先醃過,比較有味道)

    image

     

    最後的成果:

    image

     

     

    看起來是不是很讚? 吃過後,室友們都讚不絕口(我發誓,他們脖子上沒有架著刀)

    母親節快到了,下廚煮給老爸跟老媽吃,嚇他們一跳吧。

     

    (對了,我的肚子目前安然無恙)

    2009年4月22日

    [Info]整理一下目前SQL Server 2008的更新.

    SQL Server 2008 Service Pack 1:(版本:10.00.2531.00)

    http://www.microsoft.com/downloads/details.aspx?familyid=66AB3DBB-BF3E-4F46-9559-CCC6A4F9DC19&displaylang=zh-tw

     

    在 SQL Server 2008 Service Pack 1 中所修正錯誤的清單:

    http://support.microsoft.com/default.aspx/kb/968369

     

    SQL Server 2008 Service Pack 1 的累積更新程式套件 1: (版本:10.00.2710.00)

    (更新完SP1後,SP1中未包含的CU4的Hotfix)

    http://support.microsoft.com/kb/969099

    2009年4月21日

    [KB]簡單報表製作 - 利用Office Excel與SQL Server資料庫結合

    在小型企業中,主管如果常常有報表的需求,其中內容變化又不大,就可以透過Excel結合資料庫來達成。要如何處理呢?

    1. 首先建立一個Excel檔案 - SimReport.xlsx

    2. 這裡我們利用SQL Server當作資料來源。

    image

    3. 這邊使用MSSQLServer的Default Instance Name,所以伺服器名稱設定為".\"

    image

    4. 設定要連結的資料表。

    image

    5. 這裡包含了檔案名稱(像是連線字串的資訊)、描述、alias以及Excel Service的設定。image

    6. 按下完成後,就會產生下列表格。這時候就可以利用「樞紐分析表」再作多種不同報表變化。image

    我們再來看一下._ AdventureWorks Employee.odc的內容,其中定義了連線字串:



    再來看要如何設定內容更新頻率:

    1. 選擇現有連線,在目前的連線中,可以看到「使用方式」的頁籤可以設定更新的方式。

    image

    2. 如果要變更連線字串內容,可以到「定義」頁籤中作處理。

    image


    透過這種方法,一些簡單的報表就可以不用在ASP.NET或是Win Form在匯出成Excel檔案。

    如果使用者還需要一些相同資料來源但是不同Layout的報表,也可以透過樞紐分析表來達成。這是不是能節省一些工程師的時間呢? :-)

    2009年4月20日

    [Info]71-680: TS: Windows 7, Configuring的Beta考試可以註冊了~

    資料來源:

    http://blogs.technet.com/betaexams/archive/2009/04/15/register-for-beta-exam-71-680-ts-windows-7-configuring.aspx

     

    Availability

    Registration begins: April 27, 2009

    Beta exam period runs: May 5, 2009– May 18, 2009

     

     

    Registration Information

    You must register at least 24 hours prior to taking the exam.
    Please use the following promotional code when registering for the exam: WIN7J

    有興趣的朋友可以去Prometric註冊考試..

     

    (現在認證的beta考試越來越快了...Orz)

    [Info] 如何快速找到Fix it?

      台灣微軟目前提供了很多的Fix it,讓許多消費者可以不用看完整篇KB,只要按下一個按鈕,就可以幫使用者自動修正許多問題. 現在在Vista以及Windows 7上,微軟也提供了SideBar工具,讓你用最短的時間找到能修正您的電腦的Fix it.(目前為英文版本) ...