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)