2012年4月28日 星期六

Internet Explorer 網頁空白問題處理

        最近在另一台電腦將原本的IE8升級到IE9之後,突然發現無法使用,也就是開啟網頁後,秀出下列的頁面,在以往最常作的就是重設IE,但是嘗試後,仍然無法解決問題,後來查詢了之後,終於解決了這個問題,我將方式與說明撰寫如下。

問題頁面:

方式一、重設IE:
1、開啟 IE -> 工具 -> 網際網路選項 -> 進階 -> 點選 [重設]。
2、重新設動IE

方式二、關閉 GPU 硬體加速功能:
1、開啟 IE -> 工具 -> 網際網路選項 -> 進階 -> 加速圖形 -> 勾選 [使用軟體呈現,而不使用GPU呈現]。
2、重新設動IE


官網說明:
硬體加速是 Internet Explorer 9 的新功能,可讓 Internet Explorer 將中央處理器 (CPU) 中的所有圖形和文字轉譯移至圖形處理單元 (GPU)。在某些狀況下必須啟用或停用硬體加速,透過檢視特定網際網路網站 (例如內含串流或全螢幕視訊的網站) 來檢查是否有硬體或軟體的相容性問題。



參考連結:
如何在 Internet Explorer 9 中啟用或停用軟體轉譯
http://support.microsoft.com/kb/2528233/zh-tw

關鍵字:Internet ExplorerGPUIEIE 9加速圖形

2012年4月23日 星期一

SQL Server 2012 AlwaysOn vs. Database Mirroring

        SQL Server 2012中最重要的一個新功能就是高可用性(High-Availability)中的AlwaysOn,而在我之前的文章中已有深入的介紹,詳細請參考下列的連結,由於AlwaysOn是Database Mirroring的加強版,但是常常有人搞不清楚兩者之間的差異,所以我參考了網路上的一篇文章後,將文章與心得整理如下,再請參考。

參考文章:
SQL Server 2012 新功能 - AlwaysOn安裝與設定
http://caryhsu.blogspot.com/2012/04/sql-server-2012-alwayson.html
SQL Server - AlwaysOn連線設定
http://caryhsu.blogspot.com/2012/04/sql-server-alwayson.html
SQL Server - 如何建立 Database Mirroring
http://caryhsu.blogspot.com/2011/12/sql-server-database-mirroring.html

1、Clustering vs. Witness
AlwaysOn必須架設在Windows Cluster(WSFC)上,而如果Database Mirroring要作到Auto Failover時,就必須有第三台進行監控,也就是Witness的角色,就兩者相比由於Cluster必須要有特定硬體支援,而Witness的電腦只需要非常簡單的配備與SQL Server Express的版本就好,但是由於WSFC在節點偵測上(Heartbeat)的處理比Database Mirroring好很多,所以算是大大的提升穩定度的部份。

2、四個複寫節點 vs. 1 個鏡射節點
AlwaysOn比Database Miroring更優越的地方就是最多有四個複寫節點,比Database Mirroring只有一個節點相比,更可以提高系統的可用性。


3、多點資料庫失敗移轉 vs. 單點資料庫失敗移轉
如同第二項所述,由於Database Mirroring只有一個鏡射節點,所以系統發生失敗時,就只有一個節點可以當成備援,而Database Mirroring是一個以資料庫層級為主的高可用性,所以關於Server - Level的物件並不會進行同步,如系統登入帳號等,在Database Mirroring你不必須手動進行建立,但是在在AlwaysOn,由於透過可用性群組(Availability Group),所以這些就不需在擔心了。

4、混合同步與非同步連線 vs 同步或非同步連線
在Database Mirroring你只能選擇同步(High Safety)或是非同步(High Performance)模式,但是在AlwaysOn中不同複寫節點可以選擇不同的同步方式,但最重要的事,在容錯移轉的同時,必須以同步的節點進行,否則會有資料遺失的可能性,再請注意了。

5、唯讀的資料庫複本 vs 還原中的鏡射資料庫
在Database Mirroring中鏡射資料庫為還原中的狀態,所以是完全無法進行讀取的,但是您可以透過快照的方式,讓使用者存取,但是在建立快照時,還是需要將使用者的連線切斷,所以仍有不便的地方。而AlwaysOn複本資料庫提供唯讀的方式進行存取,讓你在效能負載平衡上有更好的應用。


參考網址:
SQL Server Denali AlwaysOn vs. Database Mirroring
http://www.sqlmag.com/article/sqlserverdenali/sql-server-denali-alwayson-140199


關鍵字:SQL Server 2012AlwaysOnDatabase MirroringAvailability Group

2012年4月21日 星期六

SQL Server - Unicode字元儲存與處理方式

        由於各國有各國的語言與文字呈現方式,所以在以往儲存文字時,都會以特定字元碼加以儲存,如繁體中文就使用大五碼(Big5),而簡體中文則使用GB,但由於如果同一個系統中需要處理不同的語系或處理到一些罕用字時,常會有亂碼與處理上的問題,所以後來為了統一所有的字元碼,ISO/IEC 便製定(10646 國際編碼標準) 推出了 Unicode (UTF-8、UTF-16、UTF32),簡稱為萬國碼。

在一般的網頁應用程式上,在字元編碼,前端的網頁中你必須需要指定編碼,否則會以系統的預設值而定,但是在SQL Server中如果需要儲存與處理Unicode字元時,必須符合以下兩個條件。

必須條件:
1. 資料欄位需要支援 Unicode,請使用 nchar,nvarchar,ntext 型態。
2. 查詢Unicode 字串常數需要 N 前置詞,請參考以下文件:  

INF:SQL Server 中的 Unicode 字串常數需要 N 前置詞
http://support.microsoft.com/?id=239530  

相信大家先前對於上述的處理方式都已有一定的了解,但我最近遇到一個滿特別的情況,使用者有輸入一個罕用字,而在資料庫中因為使用nvarchar的型態,所以儲存的部份一切正常,但是只要查詢條件中有使用到此罕用字時,就會有查詢筆數上的問題,後來經過確認,發現主要是此字是屬於香港增補字符集,所以在處理上必須指定特定的定序,說明如下,其中最令人高興的事,在 SQL Server 2012中特別針對增補字符集推出了一個以 SC 結尾的定序,差別就在於如果你使用一般的定序時,如果有使用到增補字符集,透用LEN的函數查詢時,一個字會變成長度2,而如果使用類似substring進行取字時就會有問題,而Supplementary Character (SC) Collations就是主要用來解決這個問題,所以還沒升級的,動作要快了哦!!


補充說明:
SQL Server provides data types such as nchar and nvarchar to store Unicode data.These data types encode text in a format called UTF-16.The Unicode Consortium allocates each character a unique codepoint, which is a value in the range 0x0000 to 0x10FFFF.The most frequently used characters have codepoint values that will fit into a 16-bit word in memory and on disk, but characters with codepoint values larger than 0xFFFF require two consecutive 16-bit words.These characters are called supplementary characters, and the two consecutive 16-bit words are called surrogate pairs.

If you use supplementary characters:

  • Supplementary characters can be used in ordering and comparison operations in collation versions 90 or greater.
  • All _100 level collations support linguistic sorting with supplementary characters.
  • Supplementary characters are not supported for use in metadata, such as in names of database objects.
  • Introduced in SQL Server 2012, a new family of supplementary character (SC) collations can be used with the data types nchar, nvarchar and sql_variantLatin1_General_100_CI_AS_SC, or if using a Japanese collation, Japanese_Bushu_Kakusu_100_CI_AS_SC.
    • The SC flag can be applied to:
      • Version 90 Windows collations
      • Version 100 Windows collations
    • The SC flag cannot be applied to:
      • Version 80 non-versioned Windows collations
      • The BIN or BIN2 binary collations
      • The SQL* collation

參考連結:
==========
香港增補字符集 部首5劃
http://code.web.idv.hk/h2u/h2u_05.php
INF:在 SQL Server 上儲存 UTF-8 的資料
http://support.microsoft.com/?id=232580
Translate to and from UCS-2 or UTF-8 as appropriate within the application. Sample code for this type of conversion is located at the Unicode Consortium's site:
http://www.unicode.org/Public/PROGRAMS/CVTUTF
Collation (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ff848763(v=sql.105).aspx
CAST 和 CONVERT (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms187928.aspx
Collation and Unicode Support
http://msdn.microsoft.com/zh-tw/library/ms143726.aspx
nchar and nvarchar (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms186939.aspx
Surrogates and Supplementary Characters
http://msdn.microsoft.com/en-us/library/windows/desktop/dd374069(v=vs.85).aspx

關鍵字:SQL Server 2012UnicodeUTF-8UTF-16Supplementary Character增補字符集ncharnvarchar

2012年4月15日 星期日

SQL Server - AlwaysOn連線設定

        在前面的文章 [SQL Server 2012 新功能 - AlwaysOn安裝與設定] 中,已有介紹如何進行 AlwaysOn的安裝與設定,相信大家已有一定的認識,但關於前端l應用程式的連線設定,由於AlwaysOn不同於Cluster的方式,在Cluster的環境中,可以透過Virtual Server Name進行連線,但是在AlwaysOn皆無法透過此方式,所以本篇我們就來介紹如何設定AlwaysOn的連線方式。


如上圖所示,由於AlwaysOn的架構中,可能會有多個複本節點,而且你也不知道目前那一個節點是主要的節點(Primary Replica),所以在AlwaysOn的可用性群組(Availability Groups)中,可透過可用性群組接聽程式(Availability Group Listener),讓使用者只需連線透過唯一的方式進行連可,底下我們就來介紹設定的方式。

1、新增與設定可用性群組接聽程式(Availability Group Listener)。

1-1. 展開 [可用性群組] -> [可用性群組接聽程式] -> [加入接聽程式]


1-2. 可用性群組接聽程式輸入的資訊如下:

1-2-1 輸入接聽程式DNS名稱,此名稱可以自行設定。
1-2-2 此處通訊埠請設定為SQL Server的通訊埠相同,預設為1433。
1-2-3 網路模式請選擇靜態IP,然後在下方加入一組對應的IP。

PS:接聽程式 DNS 名稱與對應的IP位址是前端使用者連線時使用的部份。


1-3 設定完成後,則可在原本的 [可用性群組接聽程式] 中看到剛剛新增的部份。

1-4 上述的方式主要透過GUI的方式進行設定,而另外你也可以透過下列的語法進行新增。
alter availability group SQL2012-AGN
add listener 'agp_listener'
(
  with IP
    (
      ('192.168.1.60', '255.255.255.0')
    ),
  port = 1433
)


2、連線測試。

連線的部份我們就透過最簡單的方法,也就是ODBC的方式進行連線測試,另外由於在SQL Server 2012中已有更新SQL Server Native Client,版本為11,此版本中可以在連線時設定以讀寫(Read/Write)或唯讀(ReadOnly)的方式進行,所以強烈建議使用此版本 Data Provider 進行。

2-1. 請點選 [系統管理工具] -> [資料來源(ODBC)]
2-2. 請選擇 SQL Server Native Client 11.0

2-3. 名稱請隨意輸入,伺服器的部份,你可以輸入你在第一個步驟中建立的可用性群組接聽程式的名稱。

2-4. 輸入認認的連線方式。

2-5. 在下方的 [應用程式的意圖],主要就是當你連線時要以讀寫(Read/Write)或唯讀(ReadOnly)的方式進行。

2-6. 如無特殊設定,請點選完成即可。

2-7. 測試連線是否正確。



參考連結:
Virtual Server Name
http://msdn.microsoft.com/en-us/library/ms143182(v=sql.90).aspx
Introduction to the Availability Group Listener
http://blogs.msdn.com/b/sqlalwayson/archive/2012/01/16/introduction-to-the-availability-group-listener.aspx
Overview of AlwaysOn Availability Groups (SQL Server)
http://msdn.microsoft.com/en-us/library/ff877884.aspx
Create or Configure an Availability Group Listener (SQL Server)
http://msdn.microsoft.com/en-us/library/hh213080.aspx
View Availability Group Listener Properties (SQL Server)
http://msdn.microsoft.com/en-us/library/hh231289.aspx

關鍵字:AlwaysOnAvailability GroupAvailability Group ListenerClient Connectivity可用性群組客戶端連線

2012年4月9日 星期一

如何安裝範例資料庫於叢集環境上

在之前的文章中 [安裝SQL Server 中的範例資料庫] 已有介紹如何進行範例資料庫的安裝,最近剛好與同事討論到在叢集(Cluster)的環境中進行安裝,但竟然發生無法捉到 Instance Name 的情況,雖然仍可以進行安裝,但是安裝完成後,啟動 Management Studio 仍沒有辦法看到資料庫。


後來經過不斷的研究後,終於找到手動安裝的方式,在這之前,先說明一下,如果你在單機的環境中如果已有安裝完成,你可以將資料庫透過備份後還原到叢集(Cluster)環境也是可以的(也是最快的方式),但是如果你沒有完全可還原的資料庫時,你可以透過下列的方式進行手動安裝。


1、檔案下載:
(詳細的安裝方式請參考我的前一篇文章:安裝SQL Server 中的範例資料庫 )

CodePlexhttp://msftdbprodsamples.codeplex.com/
SQL Server code-named "Denali" CTP1 :now available.
SQL Server 2008R2 :now available.
SQL Azure : now available.
SQL Server 2008 : still available.
SQL Server 2005 : still available.

2、目錄確認:
下載完成後,請先在其中一個節點進行安裝,建議可以在 Passive 的節點中進行,安裝時仍然會找不到 Instance ,請一樣繼續安裝,完成後,你可以在下列的目錄中找到資料檔(CSV)與安裝描述檔(.sql),

安裝路徑:c:\Users\Login User\AppData\Roaming\SQLServerSamples
PS:Login User為你目前登入的使用者名稱。

3、手動安裝:

配備說明:
第一台
角色名稱:Active
電腦名稱:SQL2008-AA-1
OS:Windows 2008R2 Enterprise
DB:Windows 2008R2 Enterprise
IP:192.168.1.100

第二台
角色名稱:Passive
電腦名稱:SQL2008-AA-2
OS:Windows 2008R2 Enterprise
DB:Windows 2008R2 Enterprise
IP:192.168.1.101

3-1 資料庫與目錄確認
安裝完成後,會有七個主要的目錄需要進行安裝,安裝的方式相同,我以其中一個為範例進行說明:

目錄名稱:
  1. AdventureWorks 2008R2 Data Warehouse
  2. AdventureWorks 2008R2 LT
  3. AdventureWorks 2008R2 OLTP
    上面的資料庫要啟用 FileStream 的功能才可以,啟用完成後,請得要重新啟動服務。
  4. AdventureWorks Data Warehouse
  5. AdventureWorks LT
  6. AdventureWorks OLTP

當你要安裝 [AdventureWorks 2008R2 OLTP] 的資料庫時,請先在 SQL Server 組態管理員中,將你安裝Instance啟用 FileStream 功能。


3-2 修改檔案內容
在各個目錄下都會一個以install開頭的.sql檔案,請在修改前先建立一個複本(避免改錯),再進行修改。

3-2-1 尋找 $(SqlSamplesSourceDataPath) 的文字,全部取代成 c:\Users\a-cahs\AppData\Roaming\SQLServerSamples\

3-2-2 尋找 $(SqlSamplesDatabasePath) 的文字,全部取代成 S:\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\

PS:此處的 U 是我的叢集磁碟,也就是我主要放置SQL Server Data的位置。


3-3 執行指令
上述的指令,雖然可以直接在 Management Studio執行,但由於如果你沒有修改好的話,指令不會停止,而且資料庫可能會建立在你的預設登入的資料庫中,如 Master,所以請利用 sqlcmd 載入執行,執行方法如下。

執行指令:
sqlcmd -S servername/instance -i 指令檔位置



參考連結:
Run Transact-SQL Script Files Using sqlcmd
http://msdn.microsoft.com/zh-tw/library/ms170572.aspx


關鍵字:AdventureWorksSample Database範例資料庫