2013年9月1日 星期日

如何切換叢集的仲裁模式至節點與檔案共用多數

        相信在前面的幾篇文章中,大家已經知道如何架設AlwaysOn,也其了解與其他高可用性功能之間的差異,如果大家還是是不熟的話,可以參考下列的文章,因為陸續接到許多的網友來信問到關於AlwaysOn在沒有Quorum Disk是否仍可以進行Auto-Failover的部份,所以本篇我就來實際的介紹一下,如何將原本的 [節點與磁碟多數] 變更成 [節點與檔案共用多數],如此一來即可在不需要Quorum Disk的情況下進行運作。

參考文章:
SQL Server 2012 AlwaysOn vs. Database Mirroring
http://caryhsu.blogspot.tw/2012/04/sql-server-2012-alwayson-vs-database.html
SQL Server 2012 新功能 - AlwaysOn安裝與設定
http://caryhsu.blogspot.tw/2012/04/sql-server-2012-alwayson.html
SQL Server - AlwaysOn連線設定
http://caryhsu.blogspot.tw/2012/04/sql-server-alwayson.html

1、我們以最小的三台架構來進行,也就是二台節點與一台AD伺服器,一開始我們先在AD的目錄下設定一個檔案分享,分稱為 [sync_folder],並且選擇 [共用] -> [進階共用]。


2、請勾選 [共用此資料夾],並進行權限的設定。

3、此處需要指定 Cluster 的 Virtual Server Name進行設定,並設定為完全控制。

4、相同的在 [安全性] 的頁次中,也請將Virtual Server Name也一同設定進去,權限也是相同為[完全控制]。

5、開啟容錯移轉叢集管理員 -> Cluster Name -> 其他動作 -> 設定叢集仲裁設定

6、直接點下一步

7、選擇 [節點與檔案共用多數]

8、指定在AD伺服器上設定的共用目錄。

9、確認說明

10、設定仲裁設定。

完成上述的動作後,您可以嘗試著將原本的Quorum Disk下線或進行Failover確保動作是否可以正常的運作,其實上述的動作建議在你的節點只有二個的情況下選擇這個方式,當你有多個節點時,建議還是透過Quorum Disk來進行仲裁才會比較好。

參考連結:
Understanding Quorum Configurations in a Failover Cluster
http://technet.microsoft.com/en-us/library/cc731739.aspx
Failover Cluster Step-by-Step Guide: Configuring the Quorum in a Failover Cluster
http://technet.microsoft.com/zh-tw/library/cc770620(v=ws.10).aspx

關鍵字:SQL ServerQuorum DiskQuorum configurationAlwaysOn

2013年8月17日 星期六

如何搬移使用者資料庫到其他的磁碟上

資料庫在建立時都會選擇你要將檔案放置在那一個磁碟上,但如果遇到如空間不足或是磁碟效能不足時,就需要將資料庫轉移到其他的磁碟上,下列我們就介紹如何進行資料庫的轉移作業。

1、查詢資料庫的名稱與檔案路徑的資訊
--切換目前資料庫
use  dbname
go

--列出目前資料庫的檔案資訊
sp_helpfile
go



2、將緩衝資訊寫回MDF檔案中
checkpoint

這點非常重要,可以將目前緩衝的資訊立即寫回MDF檔案中,藉以加快後續的作業。

3、將資料庫設定成離線狀態
alter database dbname set offline
go

--此步驟可能會因為有人在使用中,所以無法切換完成,如果一直都無法切換完成時,建議可以將前端的應用程式先行停用,以免應用程式不斷的連線資料庫,造成連線失敗。

4、手動複制MDF與LDF檔案至新的磁碟上

5、更改檔案位址
use master
go
Alter database dbname modify file (name = dbname, filename = 'physical path')
go
Alterdatabase dbname modify file (name = dbname _log, filename = 'physical path')
go

6、資料庫設定成上線狀態
alterdatabase dbname set online
go


參考連結:
How to use Detach and Attach functions to move SQL Server databases
http://support.microsoft.com/kb/224071/en-us
Overview of Checkpoints
http://msdn.microsoft.com/zh-tw/library/ms189573.aspx


關鍵字:SQL ServerMove User Database

2013年7月30日 星期二

Oracle轉換至SQL Server時,Outer Join運算子的處理方式

最近接到從Oracle轉移到SQL Server的案件,其中由於Oracle在使用查詢中使用了特定的Outer-Join Operators(*=、=*)語法(Non-ANSI),所以在轉換到SQL Server上就遇到問題了,其實在SQL Server 2000的版本上是有支援這個語法的,但是在後續的版本上就會遇到下列的問題。

執行語法:
SELECT e1.[EmployeeID]
      ,e1.[EmployeeName]
      ,e1.[Title]
      ,e1.[ManagerID]
      ,e2.[EmployeeName] mag_name
  FROM [Northwind].[dbo].[Employees] e1, [Northwind].[dbo].[Employees] e2
  where e1.[ManagerID] *= e2.[EmployeeID]

錯誤訊息:
Msg 4147, Level 15, State 1, Line 7
The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification,
please set the compatibility level for current database to 80, using the SET COMPATIBILITY_LEVEL option of ALTER DATABASE. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes.


解決方法其實很簡單,就是將資料庫的相容性層級(Compatibility Level)設定成80,如此就可以直接使用,但由於在SQL Server 2012已不支援將相容性層級設定成80,所以強烈建議儘量改寫這部份的語法(如下列),以免日後升級時會遇到同樣的問題。

建議語法: SELECT e1.[EmployeeID]
      ,e1.[EmployeeName]
      ,e1.[Title]
      ,e1.[ManagerID]
      ,e2.[EmployeeName] mag_name
  FROM [Northwind].[dbo].[Employees] e1 Left Outer Join [Northwind].[dbo].[Employees] e2
  On e1.[ManagerID] = e2.[EmployeeID]

在SQL Server 2012上,如果要嘗試將相容性層級變更成80時,會遇到下列的錯誤訊息,因為已不支援這個相容性層級了。

錯誤訊息:
Msg 15048, Level 16, State 1, Line 1
Valid values of the database compatibility level are 90, 100, or 110.

關鍵字:SQL ServerCompatibility LevelOuter Join Operators

2013年7月25日 星期四

為愛而學!! 由Study4.TW主辦,SQL Pass和twMVC協辦的年度技術盛會!!

活動介紹
Study4.TW與SQL Pass和twMVC攜手來新竹為大家介紹在今年微軟所發表的最新技術,相信大家對於這些產品都想躍躍欲試,本次活動將由胡百敬老師、Sky、ChiaChi、James與Bibby等五位熱情分享技術的 MVP 來為大家介紹最新的技術,讓您在業界或學校成為最閃耀超級新星!
詳細活動資訊
詳細活動內容請見活動官網,網址為 http://study4love.tw/
活動時間:2013/08/17(六) 09:00 - 17:20
講師:胡百敬老師(SQL PASS)、Bibby(twMVC)、ChiaChi(Study4.TW)、James(Study4.TW)、Sky(Study4.TW)
地點:新竹市科學園區工業東二路1號(科技生活館-達爾文廳)
人數上限: 70人
適合對象:學生、開發人員以及系統開發維護相關人員
課程大綱:
主題/課程簡介 課程時間 講師經歷
使用 Hyper-V 的小細節
Windows Server 2008 開始就有提供 Hyper-V,
而隨著 Windows Server 2008 R2 / 2012 / 2012 R2,Hyper-V 在這些版本中都有許多不錯的功能一直加入,但在這些不同版本使用中,
是否有些我們需要注意的細節被忽略了,希望在這次分享中,可以跟大家聊聊我們在這些版本上使用的一些心得。
09:30 - 10:30
MVP James
  • 微軟最有價值專家
  • 鼎新電腦服務整合中心技術總監
  • Study4.TW 核心成員
  • Hyper-V 虛擬化戰士 - 金翅級
  • Study4.TW 常任講師
使用Visual Studio 2013 來進行敏捷開發
Visual Studio歷經了多代的改變,不再是打打Code、編譯的工具了,想要知道Visual Studio 2013增強了那些功能嗎?
想要了解如何透過Visual Studio 2013來進行整個敏捷軟體開發的流程嗎?
無論是團隊、一個人、或是還在使用Visual Studio 2012的朋友們,讓我們來看看Visual Studio如何應用在軟體開發上!!
10:50 - 11:50
MVP Sky
  • 微軟最有價值專家
  • 集英信誠.NET開發顧問
  • Study4.TW 核心成員、常任講師
  • 微軟Windows Azure BootCamp 台灣區講師
  • 微軟實戰課程日講師
AngularJS with ASP.NET MVC
還在用 jQuery 寫前端嗎?還在辛苦的操作 DOM 元素嗎?
還在因為越來越複雜 JavaScript 難以維護而煩惱嗎?
那您一定要瞧瞧 AngularJS 這個前端的 Javascript Framework,它由 Google 負責維護,雙向 Data Binding,MVC 的架構,簡單直覺易使用的特性,讓您有系統的撰寫JavaScript,本課程帶您認識 AngularJS 的核心觀念、關鍵技巧以及專案上可能遇到的一些問題。
13:30 - 14:30
MVP Bibby
  • 微軟最有價值專家
  • Windows Phone 獨立開發者
  • twMVC 聯合創辦人
  • 公司職訓課程講師
  • twMVC 常任講師
Open Data Protocol for Enterprise Solution
  • OData Protocol Introduction
  • Why to Use OData for Enterprise
    Microsoft Solution for OData
  • OData Operate Data
  • How to Use OData in Enterprise
  • Conclusion
14:45 - 15:45
MVP 郭家齊
  • 微軟最有價值專家
  • 友達光電 營運資訊處 工程副理
  • Study4.TW 核心成員
  • 雲林科技大學工業工程與管理專題講座主講人
  • 漢翔工業全球運籌管理專題講座主講人
SQL Server 2014 新功能探討 
  • SQL Server 2014 記憶體內資料庫 - 簡介
  • SQL Server 2014 記憶體內資料庫 - 資料結構
  • SQL Server 2014 記憶體內資料庫 - 資料更新
  • SQL Server 2014 記憶體內資料庫 - 語法相容性
16:00 - 17:00
MVP 胡百敬
  • 微軟最有價值專家
  • 集英信誠合夥顧問
  • 恆逸資訊約聘講師
  • 台灣微軟約聘顧問
  • SQL PASS Taiwan 核心成員
  • TechDays、MSDN、TechNet常任講師
報名資訊
報名時間:2013/07/26 12:00 - 08/15 23:59
票種:Study4.TW為愛而學 場地費
票價:NTD $250
報名網址:http://registrano.com/events/eeb127

2013年7月4日 星期四

安裝SQL Server 時,遇到NetFx3錯誤處理方式。

SQL Server 2014 CTP1已經開始開放下載了,但在嘗試安裝後,很不幸的遇到的安裝錯誤,但好在很快的就找出這個問題,並已解決,我將過程整理如下,再請參考。。 


SQL Server 2014 CTP1 下載網址:
Download Microsoft SQL Server 2014 Community Technology Preview 1 (CTP1) http://technet.microsoft.com/en-us/evalcenter/dn205290.aspx

安裝環境:
Windows 2012
SQL Server 2014 CTP1

錯誤訊息:
Error while enabling Windows feature:NetFx3, Error Code:-2146498298, Please try enabling Windows feature:NetFx3 from Windows management tools and then run setup again. For more information on who to enable Windows features, see http://go.microsoft.com/fwlink/?linkid=227143



其實解決的方方在錯誤訊息的部份已有寫的很清楚,就是需要新增.Net Framework 3.5即可,你只需要在Add Roles and Features中勾選 [.NET Framwork 3.5 Features],然後再次進行SQL Server的安裝即可。



關鍵字:SQL Server 2014 CTP1、NetFx3、-2146498298

2013年7月2日 星期二

如何透過SQL Server的Full-Text快速搜尋文件內容

        SQL Server的功能不斷的增強,也整合了檔案與資料庫的部份(FileTable)等,在SharePoint的部份由於可以進行文件的控管,所以也會有許多的檔案上傳至SharePoint中,進行集中化的管理。所以本篇我們就來介紹如何透過Full-Text與Office中的 iFilter 套件,進行文件關鍵字的搜尋。

本篇我們將以繁體中文與同義字的部份進行測試,並且嘗試搜尋DOCX與XPS的檔案格式。

環境建置:
1、請先確認主機上是啟用SQL Server的主機上XPS Viewer的功能啟用。(Windows 2008)

1-1 請先至 Features中加入 [XPS Viewer] 的功能。

參考網址:
XPS IFilter for SQL 2008 (64bit) on server 2008 (64bit)
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/595bbadf-f480-4953-a9d9-f9a4733e5181/xps-ifilter-for-sql-2008-64bit-on-server-2008-64bit
Enabling XPS in Windows Server 2008
http://blogs.msdn.com/b/adrianford/archive/2008/02/12/enabling-xps-in-windows-server-2008.aspx


2、請執行下列的語法進行XPS檔案格式的啟用
exec sp_fulltext_service 'load_os_resources',1;
exec sp_fulltext_service 'verify_signature',0;

3、執行完成後,請重新啟動SQL Server Service,並請執行下列的語法進行確認。
select document_type, path from sys.fulltext_document_types


4、請安裝下列的Office Filter Packs套件

Microsoft Office 2010 Filter Packs
http://www.microsoft.com/en-us/download/details.aspx?id=17062

5、您可以透過下列的語法確認目前Full-Text支援的語系
select * from sys.fulltext_languages



測試資料建立
1、 建立測試資料表
CREATE TABLE [dbo].[testTBL](
 [doctype] [nvarchar](50) NOT NULL,
 [document] [varbinary](max) NULL,
 [docname] [varchar](50) NOT NULL,
 CONSTRAINT [PK_testTBL] PRIMARY KEY CLUSTERED
 ( [docname] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
 ) ON [PRIMARY]

備註:
Filters (iFilters). Indexing a document in a varbinary(max), image, or xml data type column requires a filter to perform extra processing. The filter must be specific to the document type (.doc, .pdf, .xls, .xml, and so forth). For more information, see Configure and Manage Filters for Search.

2、建立Full-Text Index
CREATE FULLTEXT CATALOG [CatalogTEST]
WITH ACCENT_SENSITIVITY = OFF
AUTHORIZATION [dbo]
GO

CREATE FULLTEXT INDEX ON [dbo].[testTBL](
[docname] LANGUAGE [Traditional Chinese],
[doctype] LANGUAGE [Traditional Chinese],
[document] TYPE COLUMN [doctype] LANGUAGE [Traditional Chinese])
KEY INDEX [PK_testTBL]ON ([CatalogTEST], FILEGROUP [PRIMARY])
WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM)
GO

3、新增二筆資料,此時我會將docx與xps的資料新增到資料庫中。
INSERT INTO dbo.testTBL(doctype,docname,document)
 SELECT '.docx' AS doctype, 'LogMeIn.docx' AS docname, *
 FROM OPENROWSET  (BULK N'F:\LogMeIn.docx',
 SINGLE_BLOB) AS Document

INSERT INTO dbo.testTBL(doctype,docname,document)
 SELECT '.xps' AS doctype, 'LogMeIn.xps' AS docname, * FROM OPENROWSET
 (BULK N'F:\LogMeIn.xps', SINGLE_BLOB) AS Document

4、您可以透過下列的語法確認目前在此Index上所建立的Term有那些。
SELECT * FROM sys.dm_fts_index_keywords(db_id('test_db'), object_id('dbo.testTBL'))


5、增加繁體中文同義字的定義。

你可以到下列的路徑找到檔案。 C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\FTData\ tscht.xml
請先將開頭的註解移除後,再請新增下列的資訊。
<replacement>
<pat>MS</pat>
<sub>Microsoft</sub>
</replacement>  
<replacement>
<pat>連結</pat>
<sub>連線</sub>
</replacement>  

透過第四節的資訊中,我們知道系統已有建立二個Term,分別是Microsoft連線,所以我們希望可以透過同義字的定義,MS -> Microsoft 與 連結 -> 連線,分別可以來找到所需的資訊。

6、新增完成後,由於同義字檔案中有中文字,所以如果單純的透過指令載入時,可能會因為定序的關係造成錯誤,所以必須透過下列的方式載入同義字的檔案。
USE master
GO
CREATE DATABASE temp_sbcs COLLATE SQL_Latin1_General_CP1_CI_AS
GO

USE temp_sbcs
GO

EXEC sys.sp_fulltext_load_thesaurus_file 1028
GO

USE master
GO
DROP DATABASE temp_sbcs
GO

PS:載入時由於檔案中有包含中文字,所以需請透過下列的方式進行解決。

錯誤訊息:
Msg 50000, Level 16, State 1, Procedure sp_fulltext_rethrow_error, Line 36
Error 30049, Level 16, State 1, Procedure sp_fulltext_thesaurus_update, Line 61, Message: Fulltext thesaurus internal error (HRESULT = '0x8007054e')

參考網址:
You cannot load a thesaurus file in SQL Server, and you receive the following error message: "ERROR_INTERNAL_DB_CORRUPTION"
http://support.microsoft.com/kb/2014749/en-us

7、載入完成後,我們先進行下列的查詢確認原始資料的情況。
select * from dbo.testTBL where contains(document, N'連線')


select * from dbo.testTBL
where contains(document, N'連結')


select * from dbo.testTBL
where contains(document, N'Microsoft')


select * from dbo.testTBL
where contains(document, N'MS')



8、接下來我們透過同義字的方式來進行搜尋,確認在同義字的定義上皆可正常的運作。
select * from dbo.testTBL
where contains(document, N'FORMSOF(THESAURUS,"ms")')


select * from dbo.testTBL
where contains(document, N'FORMSOF(THESAURUS,"連結")')



透過上列的方式,可以簡單的整合Full-Text與iFilter的套件,讓文件的管理可以更簡單的達到,本篇中主要使用到DOCX與XPS的檔案格式,但是其他的檔案格式其實方法都相同,大家可以多多的利用這個方式。

關於支援的檔案格式,請參考下列的網址:

Supported File Formats for #SQLServer Full Text Search (IFilter) http://www.olschimke.eu/2012/07/31/supported-file-formats-for-sqlserver-full-text-search-ifilter/


參考連結:
XPS IFilter for SQL 2008 (64bit) on server 2008 (64bit) http://social.msdn.microsoft.com/Forums/sqlserver/en-US/595bbadf-f480-4953-a9d9-f9a4733e5181/xps-ifilter-for-sql-2008-64bit-on-server-2008-64bit
Enabling XPS in Windows Server 2008
http://blogs.msdn.com/b/adrianford/archive/2008/02/12/enabling-xps-in-windows-server-2008.aspx
How to register Microsoft Filter Pack IFilters with SQL Server
http://support.microsoft.com/default.aspx?scid=kb;en-us;945934
Full-Text Search (SQL Server)
http://technet.microsoft.com/en-us/library/ms142571.aspx
Configure and Manage Thesaurus Files for Full-Text Search
http://technet.microsoft.com/en-us/library/ms142491.aspx
You cannot load a thesaurus file in SQL Server, and you receive the following error message: "ERROR_INTERNAL_DB_CORRUPTION"
http://support.microsoft.com/kb/2014749/en-us


關鍵字:Full-Text SearchiFilterSynonymThesaurus Files

2013年6月27日 星期四

如何更換SQL Server Cluster上的 IP 與 Virtual Server Name

        對於許多使用來說,應該較少有機會進行到Cluster上Virtual Server Name與Virtual Server IP的更換,但如果當有要進行主機的重新規畫,或主機搬移時,就有可能進行到,所以本篇我們來介紹如何進行這部份,其實方式非常的簡單,但是在更換前有一些程序需要先行確認,藉以將更換時的影響時間降到最低。

注意事項:
1、先行更新DNS上的名稱。
      移除舊的名稱與增加新的名稱。
2、手動先行註冊SPN (Service Principal Name)
3、確認連線到Server上的AP等程式已有先行找出對應的名稱並進行更換。
4、確認host的檔案是否有相同的名稱,有的話請一同修改。

更換作業:
1、開啟叢集管理員
2、點選您的SQL Server 服務。
3、請先點伺服器名稱,然後選擇 [讓此資源離線]。


4、等到都離線成功後,再點選伺服器名稱 -> 內容。
5、點選內容後,DNS 名稱就是您的Virtual Server Name,也就是您Cluster對外的名稱,而IP的部份,您可以編輯,藉以進行更換即可。


當您點選確定後,如果發生錯誤,有可能是你的名稱或IP在使用中,或是你的服務沒有進行離線,所以必須逐一確認後進行排除即可。


參考網址:
Changing the IP address of network adapters in cluster server
http://support.microsoft.com/kb/230356 How to change the network IP addresses of SQL Server failover cluster instances
http://support.microsoft.com/default.aspx?scid=kb;EN-US;244980
How to: Rename a SQL Server 2005 Virtual Server
http://msdn.microsoft.com/en-us/library/ms178083.aspx
How to: Rename a Computer that Hosts a Stand-Alone Instance of SQL Server 2005
http://msdn.microsoft.com/en-us/library/ms143799.aspx
Renaming a Report Server Computer
http://msdn.microsoft.com/en-us/library/ms345235.aspx


關鍵字:SQL ServerClusterRenameService Principal Name

2013年5月25日 星期六

如何秕次轉移Windows 2008R2上的Hyper-V至Windows 2012

        最近由於個人的設備升級,所以想說也同時將我的OS也一同升級,從 2008R2升級到2012,但由於我的電腦中有使用到許多的VM,所以在轉移前一直在找是否有比較好的方式進行轉移,在與我的同事Aska Su與Felix Hu討論後,所以我決定透過語法的方式批次轉移,主要是由於因為透過介紹一次選擇多個VM視窗匯出時,系統會以平行處理的方式進行,此時坦白說不會比較快(可能會更慢),所以大部份都是建議逐一選擇後再匯出,但我不太喜歡這種方式,後來終於透過PowerShell,終於可以批次匯出,底下我就來介紹這個方法。

轉移程序:
1、請手動將目前的所有VM進行關機的動作,請記錄如果VM的狀態為 [已儲存] 的狀態時,也請將VM啟動後進行關閉的動作,以免轉移後 [可能] 發生問題。

2、請至下列的網址進行 PowerShell for Hyper-V的Library的安裝。

PowerShell Management Library for Hyper-V
http://pshyperv.codeplex.com/

下載後解壓縮並執行 install.cmd之後即可進行安裝,如下圖。



3、安裝完成後即會出現下列的PowerShell畫面,此時請輸入下列的語法,即可逐一的將VM進行匯出。

get-vm | Export-VM  -path G:\vm -copystate -wait -force

上述中紅色的區塊指的是你的匯出位址。


4、在匯入前請先確認在新舊兩台機器上的 [虛擬交換器管理員] 是否相同,如果你在舊機器上有新增交換器時,也請新增相同的名稱於新機器上。

5、最後請手動匯入虛擬機器,如果您在執行手動匯入時,發現在跳出提醒,代表你的VM在匯出時,狀態已儲存,所以才會有這種情況,這時候你可以嘗試忽略錯誤繼續進行,但有時候會匯入失敗,需特別的注意,如此即可完成轉換的步驟。

參考網址:
PowerShell Management Library for Hyper-V
http://pshyperv.codeplex.com/
How to batch export virtual machines in Windows Server 2012 (PowerShell)
http://gallery.technet.microsoft.com/scriptcenter/How-to-batch-export-84c13ee2


關鍵字:Hyper-VGet-VMExport-VM、Windows 2012

2013年5月7日 星期二

報表設計 - 查無資料時顯示特定文字與表頭資訊

        相信很多有設計報表的人都會遇到一件事,就是當此次的查詢條件查無資料時,在預設的情況下,並不會顯示任何的資訊,只會顯示標題而已,常有客戶困惑的問到,這樣到底是否有正常的執行,所以往往希望我們可以在沒有任何資料顯示的情況下,至少顯示 "查無資料" 等訊息。

        其實在2008之後,在Tablix上已有內建一個屬性,那就是NoRowsMessage(感謝Ray Yen大師的提點),只需在此屬性上設定後,即可顯示一段特定的文字,但問題來了,這樣的文字有點太過於簡單,而且重點是原本的表頭也不見了,所以客戶希望我們可以也同時秀出表頭的資訊。

        在以往的情況下,其實我們可以透過SQL語法的部份進行判斷,然後增加這個方式,但這個方法有點麻煩,而且每張報表都要這個功能時,都要再額外寫SQL進行處理,真是費時費工,還好貼心的Reporting Service也有一個方式可以作到,本篇我們就來介紹如何進行。

設定方式:
1、首先我們還是利用北風資料庫作了一張階層式的報表,然後透過屬性值來過濾資料。

2、接著請在此Tablix 1上的 NoRowsMessage 屬性中加入您想要顯示的值,比如說 "查無資料" 等,此時請再次進行查詢,然後您就可以看到顯示的情況。

3、請將原本的Tablix 1再複制一個複本出來,名稱暫訂為Tablix 2,然後放置在原本的Tablix 1的下方,如下圖。

4、請將原本的Tablix 1中的NoRowsMessage值清除,只保留下方Tablix 2中的值。
5、點選Tablix 2的Properties -> Visibility -> Show or hide based on an Expression

6、在運算式中輸入下方的語法,其中Fields!OrderID.Value就是你查詢的欄位名稱,輸入完成後再點選ok即可。

7、再次預覽,此時你就可以同時呈現表頭與特定文字。


參考連結:
Set a No Data Message for a Data Region (Report Builder and SSRS)
http://msdn.microsoft.com/zh-tw/library/dd220407.aspx


關鍵字:Reporting ServiceNoRowsMessageNo Data Available

2013年4月26日 星期五

如何建立Power View報表 - 以Tabular Mode為例

        前面的幾篇文章已有介紹到多種設計PowerView的方式,再來本篇,我們來介紹如何連結到SSAS - Tabular Model(表格模式)的部份,設定方式如下:

1、請先下載下列的範例資料庫。

Database Name:AdventureWorksDW2012 Data File
URL:http://msftdbprodsamples.codeplex.com/downloads/get/165405

2、下載專案檔案。
Project Name:AdventureWorks Internet Sales Tabular Model SQL Server 2012
URL:http://msftdbprodsamples.codeplex.com/downloads/get/353144

專案完整的制作方式說明,您可以參考下列的網址:
http://msdn.microsoft.com/en-us/library/hh231691.aspx

3、請先確認您目前安裝的SQL Server Analysis Service為表格模式(Tabular Mode)。
確認方式您可以透過下列的兩種方式進行。

3-1 透過SQL Server Management Studio連線到SSAS時,您可以透過連結的圖示來判斷模式為何。

表格模式(Tabular Mode)

多維度模式(Multidimensional Mode)

3-2 開啟SSAS的設定檔,藉以判斷目前的安裝模式為何。

路徑:
C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\Config\msmdsrv.ini

確認DeploymentMode的參數,數值為0時,代表為多維度模式(Multidimensional Mode),數值為2時,代表為表格模式(Tabular Mode)。

4、開啟專案後,選擇部署,即可完成SSAS環境的建置。


5、 登入SharePoint的前端網站後,請點選 [文件] -> [新增文件] -> [BI語意模型連接]

6、 請在下列輸入相對應的資訊,然後點選確定。

7、 建立 [BI 語意模型連接] 後,請再點選 [ 建立 Power View 報表 ]。


8、 此時即會開啟Power View的開發環境,然後請依序點選下列的項目,即可完成報表的設計。
8-1 請點選 [Date] -> Calendar Year 與 Month
8-2 請點選 Internet Sales -> Sales Amount
8-3 請點選 [設計] -> 線條


其他參考文章:
如何在Excel 2013中使用PowerView
http://caryhsu.blogspot.tw/2012/12/excel-2013powerview.html
如何建立PowerView的報表
http://caryhsu.blogspot.tw/2013/03/powerview.html


關鍵字:SSASTabular ModelPowerView

2013年4月10日 星期三

如何切換變更Analysis Service的安裝模式

        以往SQL Server Analysis Service中主要是以多維度(Multidimensional Models)的模式方式進行,但是在SQL Server 2012之後,推出了表格模式(Tabular Models)的方式提供給使用者進行選擇,由其是以當你需要使用PowerView時,到目前為止(註1),SSAS端只能透過表格模式的方式當成資料來源端。

由於最近需要測試PowerView 連結到SSAS的部份,但可惜我當初安裝時是以多維度模式進行安裝,所以PowerView無法連結,後來找到一個方法,可以透過下列的方式,將你的SSAS進行模式的切換。

PS:此篇所介紹的切換方式只適合於剛安裝完成,而且沒有進行任何的專案部署,否則你會遇到在表格模式中無法針對以多維度模式部署的資料庫,再請多多注意。

註一:
由於目前在PowerView的部份已有提供連結到多維度模式(Multidimensional Models)的方式,但由於目前只到CTP的版本,大家可以參考下列的連結。

Power View for Multidimensional Models - Preview
http://blogs.msdn.com/b/analysisservices/archive/2012/11/29/power-view-for-multidimensional-models-preview.aspx


1、請先確認目前SSAS安裝的模式為何。

1-1 當你連結到SSAS時,如果開頭的圖示為下列的情況時,代表你目前是多維度模式(Multidimensional Models)。

1-2 當你連結到SSAS時,如果開頭的圖示為下列的情況時,代表你目前是表格模式(Tabular Models)。

2、開啟下列的檔案進行模式的變更‧

2-1 檔案路徑
C:\Program Files\Microsoft SQL Server\MSAS11.TABULAR\OLAP\Config\msmdsrv.ini

2-2 打開上述的檔案,你會看到DeploymentMode的區塊,0代表為多維度模式,2為表格模式。


2-3 修改完成後,再請重新啟動SSAS即可。

3、當您連結到SSAS,開啟資料庫時,如果要進行開啟或刪除時,遇到下列的錯誤,代表你的資料庫與你目前的模式不同所造成,要解決下列的問題,很簡單,只要將模式先切回原本的模式後,再刪除已部署的資料庫,然後再切換即可。


錯誤訊息:
無法在引擎中建立VertiPaq結構描述 'Analysis Services Tutoial',因為它已經存在。
從檔案 '\\?\C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\Data\Analysis Services Tutorial.0.db.xml' 載入 Analysis Service Tutorial database 時發生錯誤。
(Microsoft.AnalysisServices.Xmla)


參考連結:
Changing an Analysis Services instance to tabular mode
http://cathydumas.com/2012/04/23/changing-an-analysis-services-instance-to-tabular-mode/


關鍵字:SQL Server Analysis ServiceMultidimensional ModelsTabular ModelsPowerView

2013年3月16日 星期六

如何建立PowerView的報表

        在前面的幾篇已有完整的介紹到如何進行PowerView的環境建置與在Excel中進行報表設計的方式,所以本篇再來介紹如何透過PowerPivot連線到SQL Server進行PowerView報表的設計。

參考連結:
PowerView環境安裝與建置
http://caryhsu.blogspot.tw/2012/09/powerview.html
如何在Excel 2013中使用PowerView
http://caryhsu.blogspot.tw/2012/12/excel-2013powerview.html


PowerView環境安裝與建置

先決條件:
1、如果您的Excel的版本為2013以下時,需請您先行安裝下列的檔案。
        PowerPivot for Excel 安裝 (2010)
        http://msdn.microsoft.com/zh-tw/library/ee210599.aspx
2、範例資料庫 - Northwind
        SQL Server 2000 Sample Databases
        http://archive.msdn.microsoft.com/northwind/Release/ProjectReleases.aspx?ReleaseId=1401


Demo說明:
由於PowerView目前只能透過Excel與直接連接到Analysis Service的Tabular Mode,所以本Demo我將介紹如何透過Excel連線到SQL Server,然後設計一張客戶國家別的分佈統計圖。


設定流程:
1、建立Excel檔案連結至SQL Server
1-1 選擇 [資料] -> [從其他來源] -> [從SQL Server]

1-2 輸入您的伺服器名稱與登入的資訊

1-3 選擇 [Northwind] 資料庫,並先只選擇 [Customers] 的資料表即可。

1-4 確認連線資訊

1-5 匯入資料的部份,請選擇放至在 [新工作表] 即可。

1-6 確認資料已匯入至Excel中。

2、建立PowerPivot連線
2-1 選擇 [PowerPivot] -> [建立連結資料表]

2-2 此時他會將你目前選擇的工作表建立PowerPivot的連線

3、建立PowerView報表
3-1 請先將剛剛建立的Excel上傳至SharePoint的網站上

3-2 選擇Excel的檔案

3-3 確認是否更換excel的顯示名稱

3-4 上傳完成後,請點選 [文件] -> [新增文件] -> [BI語意模型連接]

3-5 請輸入此連接的名稱,而活頁簿URL,請輸入剛剛上傳的Excel名稱。

PS:預設路徑為:http://server-name/share%20Documents/powerview_demo.xlsx


3-6 建立完成後,請選擇 [建立 Power View報表]

4、設計PowerView報表
4-1 開啟PowerView的報表後,右半邊即會載入您在Excel中有設定PowerPivot連線的資料表

4-2 請勾選 [Country]與[CustomerID],然後在下方欄位的部份,請將 [CustomerID]變更為 [計數 (不是空白)]

4-3 點選 [設計] -> [線條]

4-4 此時即可將剛剛的資訊透過線條圖的方式呈現。


關鍵字:SQL ServerReporting ServicePowerView