2013年12月13日 星期五

安裝Oracle Instant Client與SQLPlus在Ubuntu上

        話說現在開始要學另外三種資料庫,真是很難消化啊

        最近在裝Oracle Instant Client就遇到很多問題,在Win上可以裝x32與x64的版本,在試Toad for Oracle時,又看到只支援x32版client的訊息,新版的好像可以支援x64,裝來裝去兩個都裝就出問題了,Linux反而比較單純

       裝完Client後,最基本連Oracle的工具就是SQL*Plus,我嘗試在Ubuntu上安裝也是花好多時間,原因就是網路上很多文章都誤導了我,連Oracle Database Online Documentation的說明也是不清不楚,像是SQL*Plus在Linux有分x32與x64版本,實際用起來有什差別嗎?你去網路上查看看差在哪裡,幾乎99%命令列都是打sqlplus,問題x64的實際上要打sqlplus64耶,這差很多的,害我明明裝好x64了,卻一直試著執行sqlplus,卻一直出錯說找不到命令,百思不解為何?以為是environment variable出錯,還是權限不足,怎麼try都不行,其實打sqlplus64就OK了,真是浪費我一堆時間(其實真正原因是我不熟啦...還怪人)

       在Ubuntu上的裝法如下,以下是我剛裝完Ubuntu後,只花十分鐘就裝好SQLPlus用的命令了,供各位參考

2013年12月10日 星期二

Remote Scan的問題

        在Performance Dashboard看到有不正常的Waiting Requests,點進去看Query Plan,發現問題在於Remote Scan,如下圖


2013年9月28日 星期六

[CTE]Common Table Expession到底有沒有使用TEMPDB呢?

        今天遇到一位同事,聊了一下跟我說CTE少用,因為CTE會佔用TEMPDB的空間,用的不恰當會把TEMPDB灌爆,講的煞有其事,我心想好像不是吧,印象中CTE並不會佔用TEMPDB的空間,但我也沒有去證實過也就沒有反駁了

        之後我查了一下WITH common_table_expression (Transact-SQL),上面是有提到Specifies a temporary named result set, known as a common table expression (CTE). 不知是不是看到temporary就認為一定是存在TEMPDB裡?

         那到底會不會佔用TEMPDB呢?我找到Steve這位大師的Temp Table vs Table Variable vs CTE and the use of TEMPDB這篇文章,值得一看,講得清楚明白啊

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前通過線上考試即可




2013年4月23日 星期二

SSDT記得要裝新版喔

        SQL 2012更新到SP1之後別忘了去Available Today: SSDT—December 2012安裝新版的SSDT才會有T-SQL Editor就可以直接在SSDT中編輯T-SQL喔如下圖


2013年4月11日 星期四

[Documenting]結合Table Layout與Value

        現有個需求是製作Table Layout的文件,有個比較特別的是還需要列出一筆對應的欄位值,產生Table Layout很簡單,列出一筆資料也很簡單,結合的話可能得用到Execl,把那一筆資料轉置,我想把這幾個步驟自動化,之後如果要製作所有的資料表時就會方便很囉了




2013年3月10日 星期日

[sp_send_dbmail]將TABLE輸出成有隔行換色效果的HTML

        用Embed的CSS來實現比較簡便,但缺點不是所有的的收信應用程式都有支援,像Gmail就無法正常顯示,除非改用Inline的CSS囉

        像下圖這樣的隔行換色效果,看起來比較美觀,也比較專業


2013年3月5日 星期二

Security Change Snapshot2取得安全性權限的資訊

    參考Nate Hughes的Security Change Snapshot這篇,可以取得SQL Server Logins, Database Permissions and Role Members的安全性資訊,還可用日期取得異動的紀錄,這想法很不錯,但少了伺服器層級的安全性資訊,於是自己加了上去,並改成SP就放上來啦,很感謝Nate Hughes的分享


2013年1月28日 星期一

出現大量Network I/O等待

        之前有啟用SQL 2008R2的資料蒐集,也安裝SQL Server® 2012 Performance Dashboard Reports,一直想說有了這些好看的報表可以幫我看到什麼?今早就看到了奇怪的東西了,伺服器統計表的SQLServer等候出現大量的Network I/O等待,如下表,點進去發現是ASYNC_NETWORK_IO的比例最高

2013年1月10日 星期四

DBCC CHECKDB出現2570一致性錯誤

    最近升級到SQL 2008 R2 x64版,在備份資料庫前加了資料完整性檢查的排程,隔天發現完整性檢查排程執行失敗,執行的指令如下

DBCC CHECKDB (test) WITH NO_INFOMSGS, ALL_ERRORMSGS, DATA_PURITY

    依據DBCC CHECKDB裡錯誤報告一節指出,每當 DBCC CHECKDB 偵測到損毀錯誤時,都會在 SQL Server LOG 目錄中建立傾印檔案 (SQLDUMPnnnn.txt)。

    在SQL Server記錄檔裡也可以看到傾印檔案的位置,如下圖