2011年8月28日

使用 Word 開啟純文字檔,不要出現檔案轉檔視窗

使用 Word 以【開啟舊檔】的方式開啟一個內含繁體中文內容的純文字檔,會出現【檔案轉換】對話視窗,要求選擇文字編碼方式(Windows (預設值)、MS-DOS、其他編碼方式)來開啟該檔案。

有沒有方法可以不要出現【檔案轉換】對話視窗,且可自動選擇【Windows (預設值)】來開啟內含繁體中文內容的純文字檔呢?
【檔案轉換】對話視窗
【檔案轉換】對話視窗

2011年8月20日

在 Windows 7 開機完畢,就自動進行 ADSL 撥號連線

欲在 Windows 7 開機完畢,就自動進行 ADSL 撥號連線,可依照下面的操作步驟進行:

  1. 依照:一點通 - 如何在 Windows 7 中設定 ADSL 寬頻撥號連線,建立好 ADSL 撥號連線,並測試設定是否正確無誤。
  2. 開啟「控制台」,將檢視方式切換成「大圖示」「小圖示」,依序按下「網路和共用中心/變更介面卡設定」。
  3. 步驟 1. 所建立的撥接名稱上,按下滑鼠右鍵,選擇「內容」指令。
  4. 按下「選項」索引標籤,取消勾選 提示名稱、密碼、憑證等 核取方塊,按下「確定」按鈕。
  5. 在桌面上空白處,按下滑鼠右鍵盤,依序選擇「新增/捷徑」指令。
  6. 「建立捷徑」視窗的「輸入項目的位置」文字方塊輸入如下的指令,然後按下「下一步」
    rasphone -d <步驟 1. 所建立的連線名稱>

  7. 接著請給予該捷徑名稱,然後按下「完成」按鈕。
  8. 按下桌面左下的「開始」,然後輸入如下的指令,然後按下 Enter 鍵:
    shell:common startup
  9. 此時,即會開啟 Startup 目錄。
  10. 步驟 7. 建立的捷徑拖曳至上個步驟的目錄中。

2011年7月10日

「我回不去了」之 Microsoft SQL Server 資料庫版本問題

台視於 2010 年 11 月播出的《犀利人妻》(英文劇名為:The Fierce Wife、日文劇名為:結婚って、幸せですか)偶像劇,在完結篇那集,有一句經典台詞:「我回不去了」,引發不少迴響。

八卦一下,該劇在 2011 年 6 月 9 日起,每週四晚上 11:00 ~ 11:54 也在 BS 日本電視台播放,我們也有偶像劇可以進軍日本。

圖片來源:BS 日本電視台:結婚って、幸せですか

在 0 與 1 的資訊界中,Microsoft SQL Server 也有「我回不去了」的情況發生。這是怎麼一回事呢?

當您把較新版本 SQL Server 上的資料庫附加或還原到較舊版的 SQL Server 時,就會發生「我回不去了」的事情。

Microsoft SQL Server 有版本Edition:通常是指產品的分類,例如:標準版、企業版;Version:產品的版號,例如:2005、2008)、Service Packs相容性層級、與內部的資料庫版本,相信很多人都知道前面幾種,卻可能不知道還有相容性層級以及內部資料庫版本這 2 個與版本相關的名詞。

以下就分別介紹相容性層級以及內部資料庫版本。

相容性層級

當新版 SQL Server 發行時,除了新增功能之外,也可能會改變一些行為(例如:從 SQL Server 7.0 開始,在執行 ALTER TABLE 的同時,可以使用 ALTER COLUMN 子句來改變欄位的設定)。為了不讓原本於舊版 SQL Server 可使用的程式,於升級 SQL Server 之後,發生不能執行或是執行的結果與舊版 SQL Server 不同,遂有相容性層級這樣的設定。

在 SQL Server 2000 的 Enterprise Manager 管理工具可以查看並設定相容性層級,如下所示的相容性層級設定為 80
在 Enterprise Manager 查看相容性層級

在 SQL Server 2005 / 2008 / 2008 R2 的 Management Studio 管理工具可以查看並設定相容性層級,如下所示的相容性層級設定為 90
在 Enterprise Manager 查看相容性層級

使用下面的 T-SQL 可查詢相容性層級:
USE master;
go
SELECT name 資料庫名稱, cmptlevel 相容性層級 FROM sysdatabases;
查詢相容性層級

使用預存程序也行:
EXEC sp_helpdb;

SQL Server 2005 開始提供「資料庫和檔案目錄檢視」的新功能,所以亦可在 SQL Server 2005 之後的版本,使用如下的 T-SQL 指令來查詢相容性層級:
-- SQL 2005 以上的版本,可由檢視表(View)查詢
SELECT name 資料庫名稱, compatibility_level 相容性層級 FROM sys.databases;

相容性層級與資料庫版本的對應關係如下所示:
資料庫版本 相容性層級
SQL Server 6.060
SQL Server 6.565
SQL Server 7.070
SQL Server 200080
SQL Server 200590
SQL Server 2008100

由上面的查詢結果或設定畫面,可以看出相容性層級是針對單一資料庫,而非整個執行個體。

欲調整相容性層級,除了使用 GUI 介面的 Enterprise Manager、Management Studio 管理工具之外,也可透過 T-SQL 指令。唯在執行時,需特別注意,避免在使用者仍連線到資料庫時,變更相容性層級,此舉可能會讓使用中的查詢,產生不正確的結果。因此建議依照下列步驟變更相容性層級:
  1. 將資料庫設定為單一使用者存取模式。
  2. 變更資料庫的相容性層級。
  3. 將資料庫設定成多使用者存取模式。
上述步驟用 T-SQL 指令來表達即為:
EXEC sp_dboption '<資料庫名稱>', 'single user', 'true';
go

EXEC sp_dbcmptlevel '<資料庫名稱>', '<相容性層級>';
go

EXEC sp_dboption '<資料庫名稱>', 'single user', 'false';
go
如果是 SQL Server 2005 以上的版本,可以改用新的 T-SQL 語法:
-- SQL Server 2000 亦可用此指令
ALTER DATABASE <資料庫名稱> SET SINGLE_USER;
go

ALTER DATABASE <資料庫名稱> SET COMPATIBILITY_LEVEL = <相容性層級>;
go 

-- SQL Server 2000 亦可用此指令
ALTER DATABASE <資料庫名稱> SET MULTI_USER;
go

於建立新資料庫時,SQL Server 如何去決定相容性層級的版本呢?當 SQL Server 收到 CREATE DATABASE 陳述式時,會複製 model 資料庫的內容,來建立資料庫的第一個部份,剩餘的部份則填入空白頁。

在預設狀態下,系統資料庫 model 的相容性層級會跟前面所列的那張表一樣,除非有去調整系統資料庫 model 的相容性層級,這麼一來,爾後建立的所有資料庫自然都會繼承相容性層級的變更。

內部資料庫版本

當我們使用附加或是還原的方式,將舊版 SQL Server 的資料庫附加或還原到新版 SQL Server 時,SQL Server 會自動升級內部資料庫版本。一般來說,版本升級的過程是看不到的,藉由特定的方式,即可看到此升級過程。

如下所示,即為附加 SQL Server 2000 所建立的 NorthWind 資料庫時,升級過程中,所顯示的訊息:
將資料庫 'NorthWind' 從版本 539 轉換為目前版本 661。
資料庫 'NorthWind' 正在執行從版本 539 升級到版本 551 的步驟。
資料庫 'NorthWind' 正在執行從版本 551 升級到版本 552 的步驟。
資料庫 'NorthWind' 正在執行從版本 552 升級到版本 611 的步驟。
...
...
資料庫 'NorthWind' 正在執行從版本 660 升級到版本 661 的步驟。

▼ 資料庫 NorthWind 從版本 539 升級到 661
資料庫 NorthWind 從版本 539 升級到 661

下面的訊息是將 SQL Server 2000 所備份出來的 Pubs 資料庫,在 SQL Server 2008 R2 還原時,所顯示的升級訊息:
已處理資料庫 'Pubs' 的 208 頁,檔案 1 上的檔案 'pubs'。
已處理資料庫 'Pubs' 的 1 頁,檔案 1 上的檔案 'pubs_log'。
將資料庫 'Pubs' 從版本 539 轉換為目前版本 661。
資料庫 'Pubs' 正在執行從版本 539 升級到版本 551 的步驟。
資料庫 'Pubs' 正在執行從版本 551 升級到版本 552 的步驟。
資料庫 'Pubs' 正在執行從版本 552 升級到版本 611 的步驟。
...
...
資料庫 'Pubs' 正在執行從版本 660 升級到版本 661 的步驟。
RESTORE DATABASE 已於 0.361 秒內成功處理了 209 頁 (4.506 MB/sec)。

▼ 資料庫 Pubs 從版本 539 升級到 661


使用下面的 T-SQL 可以知道資料庫現在的內部版本為何:
--查詢資料庫的內部版本
USE <資料庫名稱>;
go

SELECT DATABASEPROPERTY('<資料庫名稱>', 'Version') 資料庫內部版本;

-- 適用 SQL Server 2005 以上的版本
SELECT DATABASEPROPERTYEX('<資料庫名稱>', 'Version') 資料庫內部版本
如果要知道當初建立資料庫的內部版本,請使用下面的 T-SQL:
USE <資料庫名稱>;
go

DBCC TRACEON (3604);  
DBCC DBINFO;
DBCC TRACEOFF (3604);
— 或  —
DBCC TRACEON (3604);
DBCC PAGE ('<資料庫名稱>', 1 ,9 ,3);
DBCC TRACEOFF (3604);

執行的部分結果如下:
DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請連絡您的系統管理員。

...
...

DBINFO @0x000000000BAAA060

dbi_dbid = 6                         dbi_status = 29                      dbi_nextid = 1221579390
dbi_dbname = NorthWind               dbi_maxDbTimestamp = 1100            dbi_version = 661
dbi_createVersion = 539              dbi_ESVersion = 0                    
dbi_nextseqnum = 1900-01-01 00:00:00.000                                  dbi_crdate = 2004-12-13 16:11:08.590
dbi_filegeneration = 0               
dbi_checkptLSN

...
...

DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請連絡您的系統管理員。
DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請連絡您的系統管理員。


內部資料庫版本與資料庫版本的對應關係如下所示:
資料庫版本 內部資料庫版本
SQL Server 7.0515
SQL Server 2000539
SQL Server 2005611/612
SQL Server 2008655
SQL Server 2008 R2661

2011年6月12日

如何下載微軟 MCP 認證數位證書

從 2009 年 6 月 1 日開始,MCP 證書由傳統的紙本轉換成數位化(請參考:響應環保:MCP 證書數位化)。本文將一步一步地說明如何從 MCP Home 網站,下載 MCP 數位證書。說穿了,下載 MCP 數位證書就是選擇要下載 PDF 或 XPS 格式的電子檔。

選擇要下載 PDF 或 XPS 格式的電子檔

下載 MCP 數位證書的步驟可分為 3 大步驟:選擇欲下載的證書、選擇檔案格式、開始下載證書。

  1. 使用 Windows Live ID 登入 MCP Home 網站。

    ▼ 登入 MCP Home 網站
    登入 MCP Home 網站
  2. 按下「Download or order certificates」按鈕。
    按下「Download or order certificates」按鈕
  3. 按下「Access the Certificate Manager tool to download or order your certificate(s)」超連結。
    按下「Access the Certificate Manager tool to download or order your certificate(s)」超連結
  4. 此時會出現 Certificate Manager 精靈畫面,您可以按下 Preview 欄位中的放大鏡圖示,以便先行查看證書的樣子。

    ▼ Certificate Manager 精靈
    Certificate Manager 精靈

    ▼ 查看證書的樣子
    查看證書的樣子
  5. 接著請在 Download 欄位,勾選您欲下載的證書。此時會出現 Indicate your Internet connection type 選項,請依照您的上網速度,選擇每個批次所要下載的證書個數。
    依上網速度選擇適當的證書下載個數
  6. 此步驟在確認證書的名字是否正確,若正確無誤,請按下 Yes, this is the name that should appear on my certificate(s). 選項鈕,接著按下「Next」按鈕。
    若不正確,則按下請 No, this is not the name that should appear on my certificate(s). 選項鈕,以便向微軟區域服務中心(Microsoft Regional Service Center) 提出更改名字的要求。

    ▼ 確認證書名字
    確認證書名字

    ▼ 名字不正確,需要向微軟區域服務中心(Microsoft Regional Service Center)提出申請
    名字不正確,需要向微軟區域服務中心提出申請
  7. 至此已經完成選擇欲下載的證書,接著要選擇檔案格式(PDF、XPS)、紙張大小(Letter、A4)。請依照您實際的需求,選擇適當的選項,然後按下「Next」按鈕。
    選擇檔案格式(PDF、XPS)、紙張大小(Letter、A4)
  8. 終於來到最後 1 個步驟,請按下「Download」按鈕,開始下載證書。
    開始下載證書
  9. 當瀏覽器開始下載時,會出現詢問證書是否下載成功的對話方塊,若成功下載,請按下「Yes」按鈕。接著可按下 Certificate Manager 下面的 Choose CertificatesSelect File Format,以便回到第 1 或第 2 步驟。

    ▼ 證書是否下載成功


    ▼ 回到第 1 或第 2 步驟
  10. 解開上個步驟所下載的 MCPDigitalCertPDF.zip 壓縮檔,即可看到您於步驟 5. 所選取的證書。
    MCPDigitalCertPDF.zip 壓縮檔中的證書

如果您選擇購買實體證書的話,請勾選步驟 4. 中的 Purchase 核取方塊。第 1 份證書索價 US$9.95(費用包含服務費、處理費、以及郵局的郵寄費),第 2 ~ 6 份,每 1 份需要再付 US$0.99,而且每次最多只能訂購 6 份證書。簡單地說,1 次購買 6 份實體證書,共要花費 US$14.9,以中央銀行網頁 2011/6/10 新臺幣對美元銀行間成交之收盤匯率 28.835 來算,約為臺幣 430,但您還需要考慮信用卡公司會收至少 1 成的服務費,就接近 500 元大關。

使用郵局寄送,一般要花上 5~22 天。如果您嫌遞送時間過久,就考慮需要使用快遞方式寄送(由 DHL 或 UPS),時間縮短到 2~7 天,當然價格就還要再往上加了。因此個人會建議,還是直接從網頁下載電子檔,是較為省成本的做法

2011年6月4日

使用 Windows PowerShell 將 SQL Server 資料匯出成 .csv 檔案

先前「使用 Windows PowerShell 將資料匯出成 .html 檔案(含安裝 SQLPSX 模組教學)」一文說明使用 CodePlex 的 SQL Server Powershell Extensions(簡稱 SQLPSX)專案,可以將資料匯出成 HTML 格式。

此次則是要介紹如何在 Windows PowerShell 透過 SQLPSX,並使用 Windows PowerShell 內建的 ConvertTo-CSV 指令(Cmdlet)產生以逗點分隔的內容,再搭配導向功能,將 Microsoft SQL Server 資料輸出成 .csv 檔。

▼ 使用 Microsoft Excel 觀看輸出的 .csv 檔
使用 Microsoft Excel 觀看 SQLPSX 輸出的 .csv 檔

在 Windows PowerSehll 輸入如下的指令:

Get-SqlData ".\SqlExpress" 北風貿易 "SELECT 員工編號, 身份證字號, 姓名 FROM 章立民研究室" | ConvertTo-Csv > d:\章立民研究室.csv

上面的指令會從本機電腦中,名稱為 SqlExpress 的 SQL Server Express 執行個體中的北風貿易資料庫,找出章立民研究室資料表中的所有資料,但只顯示 3 個欄位,接著將查詢結果轉換成 csv 格式,最後再導向輸出到 d:\章立民研究室.csv

當您使用文字編輯器(例如:記事本)開啟該 .csv 檔時,會發現到第 1 列多了 #TYPE System.Data.DataRow 這樣的文字,而第 2 列才是欄位名稱的清單,第 3 列之後才是真正從資料庫匯出的資料。

▼ 匯出的 .csv 檔第 1 列會有型別資訊標頭
匯出的 .csv 檔第 1 列會有型別資訊標頭

如欲避免產生第 1 列的文字(亦即物件型別的資訊標頭),可在 ConvertTo-CSV 指令加上 -NoTypeInformation 參數,這樣才不會產生型別資訊標頭。 所以完整的指令為:

Get-SqlData ".\SqlExpress" 北風貿易 "SELECT 員工編號, 身份證字號, 姓名 FROM 章立民研究室" | ConvertTo-Csv -NoTypeInformation > d:\章立民研究室.csv
關於 SQLPSX 模組詳細的指令說明,可在此處找到。