SQL Server 2005 檢視表的不思議現象

 春天到了~俗話說「春天後母臉 — 說變就變」,那系統可以說是女人心 — 永遠都有可愛又難以捉模的時刻~ 咳咳咳…扯遠了…回到正題 ^^”。由於最近公司的 DB Server 進行升級,系統也將原本的 SQL 2000 升級至 2005,步驟在一般不過了:
安裝 => 設定 => 升級 SP2 => 完成把原本的 MDF 掛載上去後,修改連線密碼,一切正常!!上線~隔天不思議的情形就發生了…網頁上顯示的資料居然都是最舊的!! What’s up !?!?

將頁面上使用的 view 表以 SSMS 開啟,發現排序的指令沒有生效
程式內使用的 SQL String 為 “Select * from vwTest”
而 vwTest 內則有下 order by [dtDate] 的語法,恩恩~怎麼看都沒錯啊~
切到檢視表設計下看…排序以及資料都是正常的!!好…看來是檢視表內的 order 語法無法在讀取檢視表 vwTest 的第一時間生效了…馬上進行 Troble Shooting!!

在 Google 了一下之後,首先看到了微軟的 KB,裡面說到其症頭為 –

The SELECT statement uses the TOP (100) PERCENT expression.
==> vwTest裡面的確有用到 TOP (100) PERCENT 的選取方式


The SELECT statement uses the ORDER BY clause.
==> 也有使用 order 排序

解決方式 –
936305 Cumulative update package 2 for SQL Server 2005 Service Pack 2 is available

安裝時明明有升級到 SQL 2005 SP2 … 現象卻依然持續的發生,只好繼續找了 T_T
最後在國外的 SQL SERVER 為主題的 BLOG 中找到了一篇文章說明了因應的對策

  • 在Select語法的部分,將原本的 Select TOP (100) PERCENT 改為 Select TOP 2147483647
  • 有找到另外一種解法,將 Select 語法改為 Select TOP (99.999999999999)也是可行的,注意~小數點後面是 12 個 9 唷!

我採用的方法是 12 個 9 的方法,將 vwTest 的語法修改之後並儲存,在開啟的同時…一切又回到美好的正常狀態了!這裡也有一個看起來頗奇怪的地方呢,不知道各位有沒有注意到,既然都選取 TOP 100 PERCENT 了,不就是選取全部了嗎?為什麼還要特別加上以百分比選取的語法呢?後來跟程式設計師討論了一下,可能是早期的程式產生器所產生的 VIEW 特有的現象,由於程式已經是 N 年前寫的,現在已經不可考了。但為了安全…輕易的把 TOP 100 PERCENT 拿掉又怕會有更不可思議的意外,因此暫且先用 14個 9 的選取方式代替。

小插曲 — 針對 SQL 2005 SP2 的重大更新
這一個更新是在找資料中看到的,標題很有趣的寫著 “A Service Pack for a Service Pack
這個 hotfix 修正的可是一個大問題呢…”清除工作未在排定的時間間隔執行
什麼 O_o…排定的工作不會執行,這可是大事,當然馬上把它下載到 SERVER 進行安裝
有先發現總比到後面問題發生在處理好多了,這雖然是一個小插曲,卻是一個很大的意外收穫呢 ^^b

參考資料:
http://support.microsoft.com/kb/926292/en-us
http://support.microsoft.com/kb/933508
http://support.microsoft.com/kb/933508
http://www.themssforum.com/SQLServer/Order-views/
http://sqlblog.com/blogs/tibor_karaszi/archive/2007/11/28/sorted-views.aspx
http://www.sqlmag.com/Article/ArticleID/95449/sql_server_95449.html

 

來源:www.51-pass.com

Related posts:

  1. 《SQL Server 2005 資料庫管理》電子書分享
  2. 《Microsoft SQL Server 2005 設計資料庫伺服器基礎架構》
  3. Microsoft SQL Server 2008 數據庫認證體系

Related posts brought to you by Yet Another Related Posts Plugin.

This entry was posted in News.

Leave a Reply