2013年9月23日 星期一

[T-SQL]CTE也可以用來簡化你的UPDATE喔

        CTE一般說來都拿來參考用,也就是拿來Join,但我不知道竟然可以直接拿來Update呢,而不用Join喔,第一次看到有人這樣用我還很驚訝,心想怎麼不需JOIN呢?

        不多說,直接看例子吧

2013年9月12日 星期四

[DMVs]Analysis Services也有專用的DMVs

        前一篇文章我介紹了幾個XMLA的例子,不管是Process,Backup或Restore都是XMLA的命令,但其實我最先接觸的是XMLA的方法,因為我想取得Cube的Metadada,所以我使用Diccover方法,可是發現實在太難用了,後來發現竟然有替代Discover方法的的東西,就是Data Management Views (DMVs)

        看到DMVs,DBA應該都很熟悉,不過這個是Analysis Services(AS)的DMVs,不是SQL Server(SQL)的DMVs,使用起來是有差異的喔
  • 工具:SQL的DMVs是用Database Engine Query,而AS的DMVs得用MDX Query或DMX Query
  • 查詢語法:SQL的用的是Transact-SQL的Select,而AS的是SELECT (DMX)

2013年8月28日 星期三

[SSAS]XMLA的用途

        之前當DBA時,有看過XMLA的格式,但覺得長的跟XML幾乎一樣的東西,我要拿來作什,XML不是通常做為資料交換的標準,要不就是當作Configuration Files嗎?又不能拿來當作命令執行,所以忽略它了,就因為當時我沒深入研究它

        如今身為BI Engineer,又再次接觸XMLA,才知道它是基於SOAP的XML協定,還是OLAP的工業標準呢!Microsoft,Hyperion與SAS都支援它喔,透過XMLA就可以跟OLAP溝通

2013年8月19日 星期一

[T-SQL]PIVOT兩欄甚至多欄的方法

        最近遇到一個報表的特殊需求,要將兩個欄位的列轉成欄(PIVOT),一般頂多處理一欄吧,這次要處理兩欄,而且轉置後,將會多出五十幾個欄位喔...@@

        基本上可以用CASE處理;也可以用PIVOT,雖然BOL上沒提到PIVOT可以多欄,實際上可以用多個PIVOT來做,但最後還要GROUP BY再SUM起來有點麻煩;也可以分別對兩個欄位各自PIVOT後,再JOIN起來,一樣可達到目的

        我在想說有沒有更好的方法,結果在網路上看到有人用PIVOT把多欄當一欄來做,超簡單的,我想都沒想到可以這樣用呢,就是先將多欄UNPIVOT成一欄,再PIVOT就OK啦

2013年7月11日 星期四

[SSAS]Client unable to establish connection; 08001

    原本處理Cube時都好好的,不知為何搬移Cube後,重新處理就發生下列錯誤

<Error ErrorCode="3238395904" Description="OLE DB 錯誤: OLE DB ODBC 錯誤: A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.; 08001; Client unable to establish connection; 08001; Encryption not supported on the client.; 08001" Source="Microsoft SQL Server 2012 Analysis Services" HelpFile="" />
<Error ErrorCode="3239182436" Description="高層級關聯式引擎有錯誤。 無法與具有 DataSourceID 'SRC_DB',名稱為 'SRC_DB' 的資料來源建立連接。" Source="Microsoft SQL Server 2012 Analysis Services" HelpFile="" />

        上網搜尋到兩篇相關文章,SSAS processing error: Client unable to establish connection; 08001; Encryption not supported on the client.; 08001Fixing Cube Processing ODBC Errors

        第一篇的解法比較容易,把Data Source的Provider換成舊版的就解決了,第二篇是要更換Services Account然後重啟SSAS

        兩篇的解法我都試過,最後我覺得把Provider換掉最快了,然後我還是不知道為什麼,因為就我的latop發生問題,Server沒事...

2013年7月8日 星期一

[T-SQL]CROSS APPLY的用法你會幾種?

        在沒看過The many uses of CROSS APPLY這篇之前,以前我只知道配合Inline Table-Valued Function來使用,今年五月改做BI的工作之後,常需寫ETL Script,遇到要UNPIVOT Table的狀況,想到之前設計的Inline Table-Valued Function裡面有用到Tally Table,由Tally Table想到SQL 2008之後的table value constructors (TVCs),彼此配合使用就可以很簡單的UNPIVOT了說

        也就是說我只知道兩種用法,沒想到還可以切割XML跟重用計算欄位呢!那你知道幾種呢?

        有兩個常需父母操煩小孩後,時間都給了小孩,都沒時間念書,也很少有時間寫Blogger了,現在居然瘦到十幾年前高中時的體重了,有沒有給他誇張,所已請見諒我很少更新Blogger了...

       

2013年6月25日 星期二

[DBA天團爭霸戰]快去參加

網址在此---> [DBA天團爭霸戰]

台灣微軟舉辦兩屆的SQL HERO後,終於又辦了SQL Server的競賽囉
你夠TOP的話可以一人參加競賽,也可以三人組團報名
這次獎品有證書耶,連藍袍級的都有
前兩屆的SQL HERO好像都沒有證書喔
趕快去報名吧
反正藍袍級的可以無限制挑戰
記得7/31前通過線上考試即可