搜尋本站文章

2007-12-31

檢視連線所耗用的:CPU 使用量、使用 磁碟 IO 次數與在網路上傳輸的封包數量; session requests CPU,Disk,packet


若是想要檢視每一條連線,所耗用的 CPU 使用量,使用 磁碟 IO 次數。可以參考以下的範例:

SELECT session_id N'工作階段識別碼',cpu_time N'工作階段所使用的 CPU 時間(毫秒)',
reads N'讀取次數',writes N'寫入次數',
logical_reads N'邏輯讀取數'
FROM sys.dm_exec_sessions
ORDER BY 1 DESC



請參考下圖所示:



若是想要檢視每一條連線,在網路上傳輸的封包數量。可以參考以下的範例:

SELECT session_id N'工作階段識別碼',num_reads N'封包讀取數',
num_writes N'封包寫入數'
FROM sys.dm_exec_connections
ORDER BY 1 DESC



請參考下圖所示:

找出被封鎖的連線; blocked lock connectoin


有朋友在詢問,如何找出來因為封鎖(Blocked Lock)造成的等待時間、被封鎖的連線等等之相關資訊。

其實方法有很多,建議您可以參考以下的動態管理檢視:
sys.dm_exec_requests


範例如下:
SELECT session_id N'工作階段識別碼',status N'要求的狀態',
command N'目前所處理命令的類型',blocking_session_id N'封鎖要求之工作階段的識別碼' ,
wait_type N'被封鎖的等候類型',wait_time N'等候的持續時間',
wait_resource N'目前等候的資源',transaction_id N'要求執行所在交易的識別碼'
FROM sys.dm_exec_requests
ORDER BY 1 DESC



請參考下圖的顯示結果:



什麼是鎖定(Lock)?
每一個交易會要求資源上不同類型的鎖定,例如交易相依的資料列、頁面或資料表。鎖定會阻擋其他交易修改資源,以免造成要求鎖定的交易發生問題。每一個交易對於鎖定的資源不再具有相依性時,就會釋放它的鎖定。

什麼是資料列版本控制(Row Versioning)

啟用以資料列版本控制為基礎的隔離等級之後,「Database Engine」會維護每一個修改過的資料列的版本。應用程式可指定交易使用資料列版本,來檢視交易或查詢開始時已存在的資料,而不是以鎖定來保護所有讀取。透過使用資料列版本控制,讀取作業封鎖其他交易的機會可大幅降低。

鎖定和資料列版本控制可防止使用者讀取尚未認可的資料,以及防止多個使用者同時變更同一筆資料。若未使用鎖定或資料列版本控制,則對資料執行查詢時,可能會傳回尚未在資料庫中認可的資料,因而產生非預期的結果。

什麼是封鎖(Blocked Lock)?
當系統無法將鎖定授予某個資源上的交易,因為會與該資源上另一交易的鎖定發生衝突,此時,要求鎖定的交易會被封鎖,直到擁有鎖定的交易釋放鎖定為止。

如果 Microsoft SQL Server Database Engine 的執行個體因為另一個交易已擁有資源的衝突鎖定,而無法將鎖定授與給另一個交易時,第一個交易會被封鎖,並等待現有鎖定釋出。
依預設,除非嘗試存取資料 (且可能會永遠被封鎖),否則並沒有強制的逾時期限,且無法在鎖定資源之前測試資源是否已經鎖定。

2007-12-25

宣告式管理架構 Declarative Management Framework (DMF)


Declarative Management Framework(縮寫為:DMF),這是 SQL Server 2008 對於資料庫引擎所新提供:以原則為基礎,用來管理資料庫引擎架構的功能。
這項功能,有點類似於 Windows Server 上的群組原則;[群組原則]:由系統管理員所定義,可自動設定電腦設定的工具;而 DMF 是由資料庫管理師所定義,可自動設定、管理 SQL Server 相關參數的一組功能。

SQL Server 2008 導入宣告式管理架構(DMF),提供類似在 Windows Server 上的[群組原則],讓資料庫管理師直接利用 SQL Server Management Studio對於:SQL Server、資料庫、資料庫物件等等,設置符合企業需求的原則。
Declarative Management Framework(DMF),因為尚未取得 Microsoft 官方的中文翻譯,因此先暫時翻譯為:宣告式管理架構。

以下是 SQL Server 2008 Nov CTP 的抓圖。











在 Google Blogger 中使用 SyntaxHighlighter 1.5.1

更新日期: 2010/10/07

在 Google Blogger 中使用 SyntaxHighlighter 3.0.83
http://sharedderrick.blogspot.com/2010/10/google-blogger-syntaxhighlighter-3083.html




更新日期:
2009/05/25

SyntaxHighlighter 作者已經更新到版本為 2.0.320 。

請參考以下的網址:
SyntaxHighlighter - Alex Gorbatchev
http://alexgorbatchev.com/wiki/SyntaxHighlighter
但在 SyntaxHighlighter 2.0 以上的版本,其授權模式採取 Donationware。建議各位若要使用 SyntaxHighlighter 2.0 以上的版本時,記得要給作者實質上的鼓勵。請參考以下的網址:
SyntaxHighlighterDonate

http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate

Donationware
SyntaxHighlighter is donationware. If you are using SyntaxHighlighter 2.0 on your site or including it in your product, please donate.

Retrieved from
http://alexgorbatchev.com/wiki/SyntaxHighlighter




在撰寫網誌時,若是有使用到程式碼,可能多半會遇到將程式碼貼到網誌時,版面是一團混亂,目前筆者是使用 SyntaxHighlighter 這個免費的 Java Script 工具。這個是在客戶端的瀏覽器上執行,所以只要瀏覽器有支援,應該都可以正確顯示:

下載網址
dp.SyntaxHighlighter , Version: 1.5.1

http://code.google.com/p/syntaxhighlighter/

作者的網址:
http://www.dreamprojections.com/syntaxhighlighter

筆者以在 Blogger 中使用 SyntaxHighlighter 來介紹:
步驟1. 先去 SyntaxHighlighter 下載檔案。
步驟2. 到 Google Pages 申請免費的網頁存放空間。


http://pages.google.com/

因為 Google 已經停止 Google Pages。請改用其他方式來存放相關的程式碼,例如,使用 Google Code 等等。

Google Page 提供數項功能:
A. 提供免費的工具,協助您製作網頁、發行網頁。
B. 目前是提供 100 MB 的空間可供使用。
C. 提供多樣的佈景主題、版面等等可以自選。
...
請參考此處說明:
http://pages.google.com/-/about.html#using

步驟3. 將檔案解開來後,在 1.5.1 版本中,解壓縮後,將會有 3 個資料夾;請將以下的檔案,全部上傳到先前申請 Google Pages 的空間上:

A. Scripts 資料夾內的程式(*.js 與 *.swf) 。
B. Styles 資料夾內的 SyntaxHighlighter.css。

步驟4. 登入您的 Blogger。
步驟5. 點選[版面配置]\[範本]\[修改 HTML]。
步驟6. 請以下的範例,複製到 </body> </html> 標籤的前面。

<link href="http://DerrickLaLa.googlepages.com/SyntaxHighlighter.css" type="text/css" rel="stylesheet"></link>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shCore.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushCpp.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushCSharp.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushCss.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushDelphi.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushJava.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushJScript.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushPhp.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushPython.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushRuby.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushSql.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushVb.js"></script>
<script language="javascript" src="http://DerrickLaLa.googlepages.com/shBrushXml.js"></script>
<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf="http://DerrickLaLa.googlepages.com/clipboard.swf";
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
</script>



提醒您:
1. 請將 DerrickLaLa.googlepages.com 置換為您所申請的網頁空間。
2. 若是 Google Page 停止申請,您若不介意的話,或許可以直接引用本站的範例碼來使用,也是可行的方法。

或是您可以連線 SyntaxHighlighter 作者提供的網址:http://alexgorbatchev.com/wiki/SyntaxHighlighter:Hosting

裡面由 1.5.1 版本到目前最新的版本 2.0.320 等都有提供,請自行參考。

但此網站的網路頻寬部分,筆者也不清楚,此外,若您要使用 2.0 以上的版本,其授權模式採取 Donationware。建議各位若要使用 SyntaxHighlighter 2.0 以上的版本時,記得要給作者實質上的鼓勵。請參考以下的網址:SyntaxHighlighter/Donatehttp://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate

步驟7. 在撰寫網誌時,若是需要貼上程式碼時,可以搭配以下的使用方式:





<textarea class="languages" name="code" rows="50" cols="70">
... 需要呈現的程式碼,請放置於此 ...
</textarea>


或是




<pre class="languages" name="code">
... 需要呈現的程式碼,請放置於此 ...
</pre>


其中 languages 部分,目前所支援有:
C++、C#、CSS、Delphi、Java、Java Script、PHP、Python、Ruby、Sql、VB、XML/HTML 等等。
請參考以下列表,將指定的語言之 Aliases 置換到 languages 的位置上。






支援的語言



Here's a list of supported languages and their aliases:

Language Aliases
C++ cpp, c, c++
C# c#, c-sharp, csharp
CSS css
Delphi delphi, pascal
Java java
Java Script js, jscript, javascript
PHP php
Python py, python
Ruby rb, ruby, rails, ror
Sql sql
VB vb, vb.net
XML/HTML xml, html, xhtml, xslt



步驟8. 另外,因為 Blogger 會將程式碼的最後面,新增一個換行符號<BR>,所以直接使用 SyntaxHighlighter 可能會有問題,請啟用 BloggerMode 即可解決此問題,範例碼如下:

dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');



請參考:
BloggerMode 的說明
http://code.google.com/p/syntaxhighlighter/wiki/BloggerMode

筆者在步驟6. 的範例碼中,是已經包含啟用 BloggerMode 的程式碼。

步驟9. 請測試是否 SyntaxHighlighter 與 BloggerMode 有正常運作。


補充說明:
某些朋友在使用時,可能發覺在編寫一篇文章時,SyntaxHighlighter 並沒有動作,但 SyntaxHighlighter 是需要等到此文章發行到部落格上後,才能看到的效果。
採用 SyntaxHighlighter 的方式,這是將耗用掉客戶端的系統資源來執行 Java script。
所以如果下載網路速度慢,客戶端系統的硬體效能不佳,這是會有影響的。
可以參考官方的討論:
How to use SyntaxHighlighter.
http://code.google.com/p/syntaxhighlighter/wiki/Usage


考慮使用 klein.stephane 所建議的,增加:window.onload = function () 或是 ashwin.jayaprakash 所設計的函數來改善...等等方式來處理。

今舉一個範例如下:





修改為:





此外,還有以下的事情需要留意:
window.onload 事件會在整個 HTML 頁面 (包含圖片等) 載入完成後,才進行執行。
但若是您先前也有程式使用 window.onload 的話,這將是會把前一個 window.onload 的動作給覆蓋。

2007-12-24

檢視 SQL Server 實體 CPU、邏輯 CPU 的數量 ;Count physical CPUs,logical CPUs


SQL Server 2005 對於多核心的 CPU 的支援部分,可以分成兩個部分來討論:

(1)授權費用僅需給付實體(Physical) CPU 數量的授權費用即可。

例如: 4 顆實體四核心(Multicore)的 CPU ,也就是說:在作業系統上將可以看到 16 顆邏輯(logical) CPU。但是授權費用部分,也僅需支付 4 顆實體 CPU,而不是全部 16 顆核心的費用。


(2)軟體支援問題

SQL Server 會將單核心 CPU、雙核心 CPU 和超執行緒 CPU 都視為單一 CPU。
所以即便是 SQL Server Express Edition,如果是採用雙核心 CPU,兩個不同排程器會由 SQL Server Express 啟動並可供使用。
這可讓 SQL Server Express 在已使用單一 CPU 的限制下,使用平行處理程度。


請參考以下的範例:檢視系統上實體 CPU 與邏輯 CPU 的 T-SQL 程式:

使用 sys.dm_os_sys_info 傳回有關電腦以及有關 SQL Server 可用和耗用資源的其他有用資訊。

SELECT cpu_count N'系統上的邏輯 CPU 數',
hyperthread_ratio N'邏輯和實體處理器數目的比率',
cpu_count/hyperthread_ratio N'實體 CPU 數目'
FROM sys.dm_os_sys_info


以下是雙核心的CPU為例子的回傳結果:



符合強式密碼 strong passwords


密碼是資訊安全的基礎,早期因為觀念上的誤解、方便藉口等等,造成密碼是空白或是容易被猜解,這都是造成資料外洩的主因之一;使用者可能會覺得密碼很麻煩; 但企業的安全性就是仰賴:

  • 密碼長度。
  • 密碼唯一性。
  • 密碼有效期限。
以上三者的組合。
這三個項目有助於防禦字典攻擊和暴力破解攻擊。字典攻擊是指惡意使用者嘗試以字典中的已知文字和許多常見的密碼名稱來猜測密碼。暴力破解攻擊是指惡意使用者嘗試所有可能的排列組合,直到找出正確的密碼為止。


以下是檢查您的密碼是否是[強式密碼]的網址:
密碼檢查程式

http://www.microsoft.com/taiwan/athome/security/privacy/password_checker.mspx
Password checker
http://www.microsoft.com/protect/yourself/password/checker.mspx

如何建立強式密碼:
以下原則可協助您建立強式密碼:
使用較長的密碼。 每增加一個字元,密碼提供的保護程度也隨即提高。 密碼長度不得少於 8 個字元,最好使用 14 個以上的字元。

許多系統可支援在密碼中使用空格鍵,以便您建立由許多字組成的短語 (即「密碼短語」)。 密碼短語通常比簡易密碼更易記住,同時更長並且更難猜。

結合英文字母、數字及符號。 密碼中的字元變化越大,越難猜出密碼。
其他重要細節包括:


  • 密碼中的字元類型越少,密碼長度應該越長。 由 15 個隨機英文字母及數字所組成密碼的安全程度是整個鍵盤上任意 8 個字元所組成密碼安全程度的 33,000 倍。 如果無法建立包含符號的密碼,您需要增加足夠的密碼長度,才能提供同樣的保護程度。 密碼最好由夠多的字元加上不同類型的符號組成。
  • 使用整個鍵盤,而不要只使用最常用的一些字元。 按住 "Shift" 鍵的同時輸入符號,還有輸入數字,這些在密碼中都非常普遍。 如果從鍵盤上的所有符號中進行選擇 (包括除了鍵盤頂部一列標點符號之外的符號,以及您所用語言的專用符號),能進一步提高密碼的安全程度。
  • 使用自己容易記住但其他人很難猜到的字或詞。 記住密碼和密碼短語最簡單的方法是將密碼寫下來。 和一般想法相反的是,將密碼寫下來並無不妥,只是需要提供適當的保護,以確保密碼安全和有效。
一般來說,和密碼管理程式、網站或其他軟體型儲存工具 (如密碼管理程式) 相比,寫在紙上的密碼更難透過網際網路洩漏出去。

... 還有關於:建立強式又好記的密碼的六個步驟、應避免使用的密碼策略...等等主題,請參考這篇:
使用強式密碼協助保護您的個人資訊
http://www.microsoft.com/taiwan/athome/security/privacy/password.mspx

2007-12-12

SQL Server 2005 產品價格之列表 listprice ,retailprice


最近有許多朋友在詢問 SQL Server 2005 的價格,筆者整理如下:

下表提供了 SQL Server 2005 的定價,每個授權模型都包含零售定價和範例定價 (「處理器授權」、「伺服器及使用者用戶端存取權」和「伺服器及裝置用戶端存取權」)。



如何購買

http://www.microsoft.com/taiwan/sql/howtobuy/default.mspx

台灣微軟 SQL Server 2005 FPP (彩盒包裝) 的產品價格部分,請參考以下的列表:

發佈日期: 2007 年 12 月 1 日




目前在產品價格,可以分成:OPEN Value、FPP (彩盒包裝)、FPP AE (彩盒包裝教育版)、MOLP (授權合約產品)、MOLP AE (授權合約產品教育版)等等方式。

建議各位要連回到官方網頁,查詢最新的特價訊息、全新的估計零售價格表 (ERP; Estimated Retails Price) :

台灣微軟全系列產品價格表
http://www.microsoft.com/taiwan/partner/download/default.mspx

建議各位可以與台灣微軟授權代理商聯繫,相信可以獲得更多的優惠:
http://www.microsoft.com/taiwan/partner/franchisee.aspx

有趣的廣告詞:落健 - 拔獅子鬃毛

這句廣告詞,讓筆者覺得還不錯,但常常會唸錯,所以特別將他記錄下來:

傳說拔到獅子的鬃毛

掉落頭髮就能長回來

別相信沒有根據的說法了...

2007-12-09

快速上手測試 Testing SQL Server 2008 CTP


SQL Server 2005 下一個版本 Code Name :Katmai,已經於 11/18/2007 發行 Community Technology Preview (CTP,社群技術預覽),名稱也正式改為 SQL Server 2008。


在 12/04/2007,Micosoft 再度提供已經將 SQL Server 2008 CTP 版本的 VHD,讓我們可以節省安裝時間,避免自行安裝時,遇到軟體環境等等相關之問題,讓您專注於功能上的測試與應用。

VHD 的環境說明:

作業系統:
Windows Server 2003 R2 SP2 Enterprise Edition installed using a default configuration. No optional components are included.

額外安裝的軟體:
Microsoft SQL Server 2008 Nov CTP
Microsoft .NET Framework 2.0


登入系統用的帳號與密碼是:

Username: Administrator

Password: Evaluation1

建議搭配:
搭配:Virtual Server 2005 R2




下載 Microsoft SQL Server 2008 CTP, November 2007
http://www.microsoft.com/downloads/details.aspx?familyid=3BF4C5CA-B905-4EBC-8901-1D4C1D1DA884&displaylang=en

Micosoft 提供已經安裝好的 VHD:Microsoft SQL Server 2008 Community Technology Preview (November 2007) VHD
http://www.microsoft.com/downloads/details.aspx?FamilyID=6a39affa-db6e-48a9-82e4-4efd6705f4a6&DisplayLang=en


提醒:
依據其文件說明,此 virtual machine image 的使用期限為 30 天,超過 30 天,您可以選擇移除此 virtual machine image。

或者,MSDN 或 TechNet 的訂閱者,您可以使用利用所提供的產品啟動序號,來延長 Windows 作業系統的使用期限,但即便是利用產品啟動序號啟動此 Image,您至多可以延長使用到 2008/10/30 --> 這是 CTP 測試版,應該不會有人用這麼久吧,到那時,正式版應該推出發行了。


Best Regards,

Derrick Chen

2007-12-04

快速產生本機伺服器的註冊清單 -- (已註冊的伺服器 , Registered Servers, SQL Server)


在使用 SQL Server Management Studio 時,我們可以利用已註冊的伺服器來執行下列動作:

  • 註冊伺服器來保留連接資訊。

  • 判斷已註冊的伺服器是否在執行中。

  • 輕易將物件總管和查詢編輯器連接到已註冊的伺服器。

  • 編輯或刪除已註冊的伺服器之登錄資訊。

  • 建立伺服器群組。

  • 在有別於 [伺服器名稱] 清單的 [已註冊的伺服器名稱] 方塊中提供一個值,以提供已註冊的伺服器之使用者易讀的名稱。

  • 提供已註冊的伺服器的詳細說明。

  • 提供已註冊的伺服器群組的詳細說明。

  • 匯出已註冊的伺服器群組。

  • 匯入已註冊的伺服器群組。

等等功能。

但有時「已註冊的伺服器」內可能沒有包含正確的註冊資訊。例如:若是變更過本機的伺服器名稱後,在「已註冊的伺服器」內,仍然是保留先前的、舊的伺服器之註冊資料,若是僅包含一個執行個體,或許採用刪除重建的方式來算可以接受。 若是有多個執行個體時,那就可能就十分不便利。下圖是因故被全部刪除的畫面,請參考下圖所示:

這邊有一個簡單的步驟,可以讓 SQL Server Management Studio 自動註冊將本機伺服器上的 SQL Server 執行個體。
執行步驟如下:
1. 如果 SQL Server Management Studio 沒有顯示「已註冊的伺服器」,請在 [檢視] 功能表中按一下 [已註冊的伺服器]。
2. 在 [已註冊的伺服器] 中,以滑鼠右鍵按一下 [已註冊的伺服器] 樹狀目錄的任何節點,然後按一下 [更新本機伺服器註冊]。
請參考下圖所示: 此時會顯示、自動註冊本機伺服器上已安裝的所有 Database Engine 執行個體。其中包括 SQL Server 2000 的執行個體。SQL Server Management Studio 可以連接及管理 SQL Server 2000 和 SQL Server 2005 的執行個體。 其中,預設的執行個體是以電腦名稱顯示。具名執行個體是顯示為電腦名稱,後面接著反斜線 (\) 及執行個體名稱。若為 SQL Server 2005 Express Edition,除非在安裝期間變更名稱,否則執行個體是命名為 \sqlexpress。

多核心 MultiCore CPU 與 Oracle 之授權

Oracle 上多核心 Multicore CPU 的授權上,遠比其他主流的資料庫系統複雜許多,依據使用的硬體環境,可分成:UltraSparc T1、AMD/Intel、other Multicore Servers 等等,請參考以下所示:



我們以 AMD/Intel Windows 平台上,使用 AMD/Intel 的 CPU 為例:授權費用的計算方式是: 依據邏輯 CPU 的數量,再乘以 0.5 。

舉例來說:目前市售的 四核心(quad-core) CPU 為例,雖然我們是購買一顆實體 CPU,但是因為他的核心數量為 4,依據 Oracle 授權費用的計算方式: 4 * 0.5 = 2,也就是說,我們在軟體授權上,卻要付出 2 顆 CPU 的授權費用。

之前在客戶端服務時,使用者就抱怨說: Oracle 這種作法等於是懲罰使用多核心 Multicore CPU 的客戶。

比較 UltraSparc T1 主機,其軟體授權費用卻可以乘上 0.25,以四核心(quad-core) CPU 為例,依據 Oracle 授權費用的計算方式: 4 * 0.25 = 1,也就是說,我們在軟體授權上,僅需 1 顆 CPU 的授權費用。

換句話說:這等於是懲罰在 AMD/Intel Windows 平台上使用多核心 Multicore CPU 的客戶。之前在客戶端的使用,將 Oracle 安裝在 AMD/Intel Windows 平台,在執行效能上,測試的結果,也遜於 MySQL、SQL Server 等資料庫系統。

多核心 Multicore CPU,是目前 CPU 的發展趨勢,接下來將會有 八、十六核心等等 CPU 現身,多核心 CPU 算是 CPU 廠商在效能上提供的 bonus ,但是使用 Oracle 卻好似被懲罰一般,要額外付出不必要的授權費用...>_<






參考文件:
Multi-core Processors: Impact On Oracle Processor Licensing.
http://www.oracle.com/corporate/pricing/multicore_faq.pdf

Oracle® Rolls Out New Multicore Pricing and Licensing Policy
http://www.oracle.com/corporate/press/2005_dec/multicoreupdate_dec2005.html

SQL Server Multicore Licensing Policy
http://www.microsoft.com/sql/howtobuy/multicore.mspx

多核心 CPU 與 使用 SQL Server 版本(Multicore CPUs ; Standard Edition)


現行市售的 CPU 有雙核心(dual-core)、四核心(quad-core),甚至還有八、十六核心等等,可以讓系統提供更高的執行效能與反應效率。



但是依據 SQL Server 2005 的軟體規格來看,請參考下圖:



這是各位都會遇到多核心 CPU 與 SQL Server 在使用上的問題:
例如:若是使用 SQL Server Standard Edition 標準版本,規範上是支援 4 顆 CPU,假若採用 4 顆實體四核心的 CPU時,將會遇到幾個問題:
1. SQL Server Standard Edition 標準版本,可以使用到這麼多的 CPU 嗎?
2. 若是真的可以支援多核心的運作,是否違反 CPU 授權?

筆者整理以下的資料給各位參考:
(1)先由 CPU 的授權來討論:

當我們安裝4 顆實體四核心的 CPU ,也就是說:在作業系統上將可以看到 16 顆邏輯 CPU ,依據文件說明:
在「處理器授權」模式下,SQL Server 2005 只需要為每一個實體處理器取得授權即可。在虛擬化環境中,您需要替每個虛擬處理器或虛擬機器所存取的部分處理器購買一份授權。請參考以下文件:





僅需給付實體 CPU 數量的授權費用即可。也就是說:雖然有 16 顆核心/邏輯 CPU,但是授權費用部分,也僅需支付 4 顆實體 CPU,而不是全部 16 顆核心的費用。

(2)多核心的邏輯 CPU,超過授權的實體 CPU時,可否正常運作使用到呢?
SQL Server 2005 Standard Edition 標準版本支援 4 顆實體 CPU,與所包含的核心數量無關,Standard Edition 標準版本,可以正常完整使用。請參考以下文件:





所以依據官方文件來看,我們可以放心在 Standard Edition 上使用多核心的 CPU,在授權費用部分無須額外給付,也更可以完整使用到全部的邏輯 CPU 。

但是 SQL Server 2000 部分,則可能會比較有問題,我們以 SQL Server 2000 標準版本為例:

依據文件說明,雖然授權部分一樣是依據實體 CPU 的數量來授權,但是實際上可能無法使用超過 4 顆 CPU 的數量。請參考以下的文件:




綜合前述,多核心 Multicore CPU,是目前 CPU 的發展趨勢,接下來將會有 八、十六核心等等 CPU 現身,多核心 CPU 算是 CPU 廠商在效能上提供的 bonus,並不能等同於實體 CPU。

使用 SQL Server 2005 不管是在[功能]、[效能]等方面都表現十分傑出外,在軟體授權的價格上,僅以實體 CPU 來計算,並且能夠發揮全部邏輯 CPU 的效能,以 CP值來分析,這是最棒的資料庫管理系統!

參考資料:

SQL Server 2005 版本所支援的最大處理器數目
http://technet.microsoft.com/zh-tw/library/ms143760.aspx


Maximum Number of Processors Supported by the Editions of SQL Server 2005
http://msdn2.microsoft.com/en-us/library/ms143760.aspx


SQL 問答集 最佳作法分析程式、多核心處理器及更多
http://www.microsoft.com/technet/technetmag/issues/2007/05/SQLQA/default.aspx?loc=zx/


Boost Performance with New Features in SQL Server 2005
http://www.microsoft.com/technet/technetmag/issues/2006/01/BoostPerformance/default.aspx


SQL Server 2005 授權:常見問題集
http://www.microsoft.com/taiwan/sql/howtobuy/faq.mspx


SQL Server 2005 Licensing Frequently Asked Questions
http://www.microsoft.com/sql/howtobuy/faq.mspx


SQL Server Multicore Licensing Policy
http://www.microsoft.com/sql/howtobuy/multicore.mspx


Volume Licensing Briefs
http://www.microsoft.com/licensing/resources/volbrief.mspx


Multicore and Hyperthreaded Processor Licensing
http://download.microsoft.com/download/f/1/e/f1ecd771-cf97-4d98-9a1b-b86e3f24e08f/multicore_hyperthread_brief.doc


如何:決定 CPU 計數
http://technet.microsoft.com/zh-tw/library/aa337277.aspx

本文要感謝 侯彥宇先生 提供的資料,筆者在此再度感謝...^_^

Derrick_德瑞克

2007-12-03

清空[伺服器名稱]對話方塊的伺服器清單 -- SQL Server SSMS Clean Server List


在使用過 SQL Server Management Studio 一陣子之後,您的 SSMS 的[伺服器名稱]對話方塊的伺服器清單,可能會如同筆者一般,存放一堆最進這幾次所使用的伺服器清單,請參考下圖所示:



但這有可能是已經失效的、無用的,或是您不想讓別人知道這清單列表時,我們可以使用以下的方式來進行清空[伺服器名稱]對話方塊的伺服器清單。

-- 請從下列資料夾移除 mru.dat 檔案:
%UserProfile%\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell

-- 例如:
C:\Documents and Settings\{您的登入帳號}\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell



當您完成刪除 mru.dat 檔案後,請關閉 SSMS ,再重新啟動 SSMS,就可以看到空白被清空的[伺服器名稱]對話方塊之伺服器清單,請參考下圖所示:



什麼是 mru.dat 檔案

SSMS 的[伺服器名稱]對話方塊上的清單,係由 MRU(Most Recently Used)檔案所記錄,會自動記錄最近數次成功登入的伺服器清單。這是一個很方便的功能,但為了提供更佳的安全性,或者這是無效的伺服器清單,您就可以將 mru.dat 檔案刪除,甚至我們還可以將 mru.dat 檔案複製給另外一位使用者來存取使用。

另外,如果您曾經遇到過以下的錯誤訊息,也是可以利用刪除 mru.dat 檔案的方式來解決這個問題。
-- 錯誤訊息
Unhandled exception has occurred in a component in your application. If you click Continue, the application will ignore this error and attempt to continue.

Unable to cast object of type 'Microsoft.SqlServer.Management.UI.ConnectionDlg.Personalization' to type 'Microsoft.SqlServer.Management.UI.ConnectionDlg.Personalization'.

您的應用程式中的元件發生未處理的例外狀況。. 如果您按一下 [繼續],應用程式會忽略錯誤並嘗試繼續。.

無法轉換物件的型別 ' Microsoft.SqlServer.Management.UI.ConnectionDlg.Personalization ' 為型別 ' Microsoft.SqlServer.Management.UI.ConnectionDlg.Personalization '。


參考資料:
Error message when you start SQL Server Management Studio in SQL Server 2005: "Unable to cast object of type 'Microsoft.SqlServer.Management.UI.ConnectionDlg.Personalization' to type 'Microsoft.SqlServer.Management.UI.ConnectionDlg.Personalization'"


http://support.microsoft.com/kb/922214/zh-tw

2007-11-28

無所不在的 IntelliSense Everywhere -- SQL Server 2008


Microsoft IntelliSense 提供一組使語言參考更容易存取的選項陣列。當編碼時,您不需要讓編輯器在語言元素上執行搜尋。您可以保留您的內容、尋找您需要的資訊、將語言元素直接插入程式碼中,甚至可以讓 IntelliSense 自動完成您的輸入動作。
有使用過 Visual Studio 的朋友,應該都知道這項方便好用的功能,尤其是在 Visual Studio 2005 上,對於像是 VBScript、XML、XML Schema、DTD、Web Config 組態檔等等都有提供。
簡單講 IntelliSense 這項功能,就是讓您在撰寫程式碼時,可以自動快顯相關可用的程式碼之提示。

IntelliSense 和程式碼編輯器的增強使開發工作更容易,錯誤更少。
但是截至目前為止,在 SQL Server 2005 的 Transact-SQL 編輯器上,卻尚未提供此項功能(雖然像是 MDX、DMX等編輯器有提供),其實在 SQL Server 2005 某個測試版本上,曇花一現,但在正式版本上卻是沒有提供。
目前在筆者測試的 SQL Server 2008() 版本上,Transact-SQL 編輯器也有實作 IntelliSense 喔。

經過測試,在開發程式上,真是十分方便好用,帶來不少便利。
使用的方式,也與使用 Visual Studio 的方式一樣,善用:
  • 列出成員: CTRL+J
  • 自動完成文字: ALT+向右鍵

這樣的使用經驗,可以由 Visual Studio 承傳到 SQL Server Management Studio,真是很棒。 若您與筆者一樣,腦袋就是背不起來指令、參數等的使用者而言,真的是一大福音。 當然,若是遇到超大型資料庫時,或許我們會想停用 IntelliSense,目前這測試版本上,若是要停用 IntelliSense 功能的話,步驟如下: 編輯以下的 registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\Shell\Languages\Language Services\SQL 將 CodeSense 的值,設定為 0,若是要重新啟用,請將 CodeSense 設定為 1 即可;請記得要重新啟動 SQL Server Management Studio。 相信在正式版本上,會與 Visual Studio 一樣,有方便的圖形介面可以使用。 依據測試版本的線上文件說明,目前支援的 Transact-SQL 語法有: (1)SELECT 陳述式,但是尚未支援 INSERT、UPDATE、DELETE,請參考下圖所示: (2)支援 DECLARE、SET、EXECUTE、CREATE TABLE、CREATE PROCEDURE、ALTER PROCEDURE,請參考下圖所示: (3)IntelliSense 支援的陳述式,請參考下圖所示: 例如: 資料庫、結構描述、資料表、檢視表、資料表函數、一般資料表運算式 、資料行、預存程序、參數、區域變數等等。 範例: --EX1.
USE AdventureWorks;
GO
SELECT *
FROM Production.Product
WHERE Color = 'Red';
請照著上面的程式,一行一行在鍵盤上敲打,就可以感受到 IntelliSense 的方便性。 --EX2.
CREATE TABLE tb1
(c1 int,c2 varchar(50))

SELECT * FROM tb1
WHERE C1=1
請照著上面的程式,一行一行在鍵盤上敲打,就可以感受到 IntelliSense 的方便性。 即便是資料表尚未建立,一樣可以感知 IntelliSense 喔。 還有一個方便的功能,也值得特別說明一下,這版本的 Transact-SQL 編輯器提供了:展開、折疊程式碼區塊的功能。這在編寫、閱讀程式碼更是簡潔方便。 下載 Microsoft SQL Server 2008 CTP, November 2007 http://www.microsoft.com/downloads/details.aspx?familyid=3BF4C5CA-B905-4EBC-8901-1D4C1D1DA884&displaylang=en Derrick_德瑞克