INF: 變更為 SQL Server 6.5 影響 6.0 的應用程式

文章翻譯 文章翻譯
文章編號: 152032 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

在此頁中

結論

本文包含了一份 Microsoft SQL Server 6.5 版可能影響您現有的 SQL Server 6.0 版應用程式所做的變更。

內容:
  1. 系統資料表的變更
  2. 系統會以格式儲存的程序變更和
  3. 新的安裝預設值
  4. 關鍵字
  5. FROM 子句和資料表名稱
  6. DISTINCT SELECT 與 ORDER BY
  7. 參考來建立外部索引鍵所需的權限
  8. SELECT INTO 或 CREATE VIEW 沒有資料行名稱
  9. RAISERROR 設 @ @ ERROR 0 如果嚴重性 10 或更少
  10. 啟動程序: sp_sqlregister
  11. 順向資料指標預設為動態資料指標
  12. 資料指標計劃在預存程序上的會快取
  13. 新的服務: MSDTC
  14. USE 陳述式中完成的 EXECUTE 重設
  15. ODBC 驅動程式設定
  16. JOIN 語法和追蹤的旗標 204
  17. 在交易中所建立的物件
  18. SELECT INTO 已不可部分完成的作業
  19. ISQL/W 連線減少因為以較大的封包大小
  20. CHECK 和 DEFAULT 條件約束中不允許的全域變數
  21. 線上書籍: 新的檢視器
  22. VBSQL.ocx 取代 VBSQL.vbx
  23. 圖形化顯示計劃已被移除
  24. 延伸預存程序
  25. 未來的考量

其他相關資訊

1.系統資料表的變更

已對系統資料表的某些變更: 已經新增新的資料行、 意義或部份資料欄的內容已經變更,並加入一些新的系統資料表。如需詳細資訊請參閱 SQL Server 6.5 線上叢書 》,新的 SQL Server 6.5 組件 4: 「"什麼 Transact-SQL 的新增。

2.系統以格式儲存的程序變更和

已經多次變更的系統預存程序。在許多情況下功能已經展開以包含新的 SQL Server 6.5 版功能。在某些情況下提供的資訊更清楚地查看簡報已被修改過輸出格式。如需詳細資訊請參閱 SQL Server 6.5 線上叢書 》,新的 SQL Server 6.5 組件 4: 「"什麼 Transact-SQL 的新增。

3.新安裝預設值

預設根目錄上新的安裝是 MSSQL 而非 SQL60 (如同在 6.0) 或 SQL (如中 4.2 x)。當升級 4.2 x 或 6.0 版的安裝會保留現有的目錄名稱。

4.關鍵字

下列文字,保留在 SQL Server 6.0 是在 SQL Server 6.5 關鍵字:
   AUTHORIZATION     FULL      OUTER          SCHEMA
   CASCADE           INNER     PRIVILEGES     WORK
   CROSS             JOIN      RESTRICT
   ESCAPE            LEFT      RIGHT
				

字 DISTRIBUTED 也是新的關鍵字,SQL Server 6.5 內。

所有資料庫物件會自動都檢查與這些新的關鍵字衝突藉由執行 ChkUpg65.exe。

5.FROM 子句和資料表名稱

在 SQL Server 6.5 中多餘的表格名稱顯示在 FROM 子句中時,會報告錯誤。下面所列的 SELECT 陳述式已在較早版本中支援的例如,但在 SQL Server 6.5 中產生錯誤。在第一個 SELECT 陳述式資料表被視為兩個不同的表格。在第二個的 SELECT 陳述式中第二個作者的參考會被捨棄。
   SELECT * FROM pubs..authors, pubs.dbo.authors
   SELECT * FROM authors, authors
				

先前,SQL Server 會使用字串比較單獨來判斷是否兩個資料表名稱識別出相同的資料表。範例、 pubs.dbo.authors 和 pubs作者已被視為不同的資料表。現在如果兩個資料表名稱並不相同,則資料庫識別碼和資料表識別碼被比較來決定它們為相同的資料表。先前在 Update 陳述式 SQL Server 會只是尋找符合不合格的資料行名稱在 FROM 子句中的第一個表格並假設是在資料表使用者意味著。現在這種類型的查詢將會產生一個錯誤,因為它是不確定應該更新哪些資料表。追蹤旗標 110 將會停用所有的變更。

6.SELECT DISTINCT 與 ORDER BY

前一版本的 SQL Server 允許 DISTINCT SELECT 查詢中若包含沒有位在選取清單中在 ORDER BY 子句中的排序資料行。例如:
   SELECT DISTINCT au_id FROM authors ORDER BY au_lname
				

SQL Server 6.5 符合 [ANSI 標準,145 錯誤所導致:
順序的項目必須出現在選取清單中,如果 DISTINCT SELECT 指定。

追蹤旗標 204 讓舊的、 非 ANSI 行為 (以及其他牽涉到從 SQL Server 6.0 等等的子查詢而非 ANSI 行為)。

7.參考來建立外部索引鍵所需權限

SQL Server 6.5 內如果您未擁有的資料表上建立外部索引鍵,您必須參考的權限在資料表上 ; 這符合 ANSI 標準。在 SQL Server 6.0 只 SELECT 權限已在參考的資料表上必要的。追蹤旗標 237 讓舊行為。

8.SELECT INTO 或 CREATE VIEW 沒有資料行名稱

在 SQL Server 6.5 版中如果沒有資料行名稱指定給由 SELECT INTO 或 CREATE VIEW 陳述式建立一個資料行,會發生錯誤。比方說 CREATE VIEW testview AS SELECT au_id,upper(au_lname) FROM 作者產生錯誤訊息 4511:
建立失敗,因為沒有資料行名稱指定為資料行 2 的檢視。
應該指定第二個資料行的資料行別名。

SQL Server 6.0 允許這樣,追蹤旗標 246 讓舊行為。

9.RAISERROR 設 @ @ ERROR 零如果嚴重性十個或更少

現在 RAISERROR 陳述式將設定 @ @ ERROR 為零如果嚴重性是 1 到 10 (含) 之間 (嚴重性具有訊息層級的十個和下並非錯誤,但它們並提供其他資訊)。如果您 WITH SETERROR 選項] 中設定 msg_id 則 RAISERROR 陳述式會指派到 @ @ ERROR msg_id 不論嚴重性。

在 SQL Server 版本 6.0 @ @ ERROR 設為 50,000 的重要性層級 10] 和 [的郵件。

若要還原到 SQL Server 的 6.0 版行為,使用 [SETERROR 選項] 或 [追蹤旗標 2701年。

10.啟動程序: sp_sqlregister

SQL Server 6.5 內預存程序 sp_sqlregister 安裝為預設的啟動程序。在啟動時,sp_sqlregister 收集作業系統、 網路和 SQL Server 的基本組態資訊,並以廣播網路上的 SQL Server 的目前狀態。契 xp_sqlinventory 任何伺服器可以收集資訊到資料表。預存程序 sp_unmakestartup 可以執行移除 sp_sqlregister 作為啟動預存程序。

11.順向資料指標預設為動態資料指標

SQL Server 6.5 內順向資料指標是動態預設允許更快的資料指標開啟並也可讓結果設定為顯示基礎資料表所做的更新。動態資料指標在版本 6.5 來得快,而且不再需要唯一的索引。

追蹤旗標 7501 停用動態資料指標的增強功能,並還原到 6.0 版行為。

12.的計劃資料指標上預存程序會快取

SQL Server 6.5 會快取某些延伸預存程序的資料指標的計劃 ; 這會提供許多的資料指標作業的效能增益。 不過它也會使用程序快取區來存放這些計劃可能會影響應用程式的快取行為 (和效能)。資料指標計劃的快取有追蹤旗標 7502 停用。

13.新服務: MSDTC

與 SQL Server 6.5 安裝新的服務。MSDTC 服務是在分散式交易協調器提供跨伺服器交易功能 (自動兩階段交易認可)。通常 MSDTC 服務應該不會影響現有的應用程式 (而非自動交易一致性),不過它因此它可能會影響現有的應用程式不需要某些記憶體和某些的處理時間。如果不需要它的功能,可以停止服務。

14.USE 陳述式中完成的 EXECUTE 重設

SQL Server 6.5 內 EXECUTEing 字串,包含 USE 陳述式完成時 」 目前資料庫 」 將自動被重設為已 [EXECUTE 之前所使用的資料庫。在 SQL Server 6.0 設定在 「 目前資料庫 」 保存在 EXECUTE 之後。

若要造成相同的行為,在 SQL Server 6.0 中,應該執行使用資料庫中的每個陳述式必須執行做為字串以 USE 陳述式在它之前。下列批次會輸出 「 pubs 」 SQL Server 6.0 中的,SQL Server 6.5 內輸出 」 母片:"
   GO
   USE master
   GO
   DECLARE @mydb VARCHAR(30)
   SELECT @mydb = 'pubs'
   EXECUTE('USE ' + @mydb)
   go
   SELECT db_name()
   go
				

若要取得在 SQL Server 6.5 SQL Server 6.0 行為,應該使用下列批次:
   GO
   USE master
   GO
   DECLARE @mydb VARCHAR(30)
   SELECT @mydb = 'pubs'
   EXECUTE('USE ' + @mydb + 'SELECT db_name()')
   go
				

此批次執行會使用資料庫中 SELECT,但是傳回給 master 資料庫完成時。

15.ODBC 驅動程式設定

Microsoft 知識庫文件編號 149921 討論一些 ANSI 設定變更,Microsoft SQL Server 2.65.0201 ODBC 驅動程式可能會影響應用程式中。通常,這些是所有因下列強制 ANSI 相容性的 SET 選項:
   SET TEXTSIZE 2147483647
   SET ANSI_DEFAULTS ON
   SET CURSOR_CLOSE_ON_COMMIT OFF
   SET IMPLICIT_TRANSACTIONS OFF
				

16.JOIN 語法和追蹤旗標 204

雖然外部聯結運算子 * = and = * 從較早版本的 SQL Server 並支援,您不能在同一個查詢中使用外部聯結運算子和聯結樣式的 ANSI SQL 資料表。

當啟用追蹤旗標 204 允許只從 SQL Server 版本 6.0 及較早的 SELECT 陳述式語法 ; 不允許聯結的資料表、 衍生的資料表和其他 ANSI 功能。

17 在交易中所建立的物件

SQL Server 6.5 允許在交易內建立的物件。這些作業由標準的交易式規則來保護及可能會被認可或還原回如有必要。不過,在交易中建立的物件會導致鎖定會保留在資料庫中的系統資料表上,直到建立交易認可或復原。使用注意當您建立在交易內的物件 ; 這包括在 tempdb 資料庫中的暫存物件的建立。

18.SELECT-INTO 已不可部分完成的作業

SELECT INTO 現在已是不可部分完成的作業,並在 SELECT-INTO,或整筆交易的持續期間會保留 sysindexes、 sysobjects 和 syscolumns 的獨佔鎖定交易內。

19 ISQL/W 連線減少因為以較大的封包大小

ISQL/W Win16 用戶端上的連線數目會受到影響的 SQL Server 網路封包大小設定值。小 [網路封包大小 (最小 512 位元組),您可以使來自同一個資料程式庫用戶端,因為越大網路封包大小上,,會使用更多的系統資源的多同時連線 Windows 3.x 用戶端。如果網路封包大小,在伺服器端已被您設定 512,應該能夠從相同的用戶端可以在 SQL Server 6.0 做相同的連線數目。如需詳細資訊,請參閱微軟知識庫文章 150909"INF: 為 SQL Server 6.5 Win16 用戶端連線數目"

20.全域變數中不允許 CHECK 和 DEFAULT 條件約束

全域變數 (如 @ @ SPID 等等) 不能用在 CREATE TABLE 或是 ALTER TABLE 陳述式) 中的 CHECK 或 DEFAULT 條件約束。 這有永遠不會被記載為有效的選項,而且現在標示為產生錯誤 112 的無效語法:
CREATE TABLE 陳述式中不允許變數。

內建函數仍然繼續使用條件約束。

21 線上叢書: 新的檢視器

在 SQL Server 6.5 線上叢書 》 使用來檢視該文字,而不是先前使用的 MSIN32.exe InfoView.exe 程式。

SQL Server 並沒有被安裝成閱讀書籍線上,可將它們安裝獨立,方法如下:
  1. 建立目錄 (c:\sqlbks 也許)
  2. 將 \sqlbks65\sqlbooks.* 檔案和 \i386\InfoView.exe 從光碟片複製到該目錄。從 6.0 MSIN32.EXE 將無法運作做為 6.5 書籍的讀取器,您執行需要的 InfoView.exe (它並不需要任何 DLL)。
  3. 建立與程式管理員項目:

    命令列的 c:\sqlbks\infoview.exe sqlbooks.mvb A 的 c:\sqlbks 的工作目錄
然後您應該要能夠讀取線上書籍。

22 VBSQL.ocx 取代 VBSQL.vbx

為 Visual Basic VBSQL.vbx,使用舊 16 位元的資料程式庫的 Visual Basic 3.0 專案應該移植到檔案新 DB-庫] 中,供 Visual Basic OLE 自訂控制項,VBSQL.ocx。如需詳細資訊請參閱 SQL Server 6.5 線上叢書 》,"對於 [Visual Basic 專案移植舊資料程式庫 」。

23 已移除圖形化顯示計劃

由於要顯示計劃輸出於會不再可在 [SQL 企業管理員查詢工具以及 ISQL/W 使用圖形顯示計劃索引標籤。

24.延伸預存程序

因為基礎結構對 C 的程式設計語言所撰寫的所有擴充預存程序必須被重新編譯 C 的原始程式碼中而且 Microsoft SQL Server 6.5 版來 OPENDS60.LIB 之下重新連結。

雖然 SQL Server 6.0 中您可以呼叫回伺服器從一個 XP,這是不受支援。透過數個連線可以共用相同的交易鎖定空間和相同的交易而相同的資料,而不需鎖定衝突也可以處理的繫結連線的使用 SQL Server 6.5 內支援這種 「 回送 」 連線。

25 未來的考量

SQL Server 6.5 包含取代功能的一些功能,先前的新功能。雖然所有的功能,從 SQL Server 6.0 繼續 6.5 中支援,SQL Server 的未來版本可能不支援其中可以是相同的功能有些陳述式用其他方式來達成。比方說下列功能 6.5 中支援,但可能會中斷在未來的版本:
  • 瀏覽模式: 雖然 SELECT FOR 瀏覽並支援 6.5,FOR 瀏覽] 子句在 SELECT 陳述式的功能可以現在來達成更有效率地使用資料指標。
  • SQL Server 內部的裝置左右反轉: 如果您的 SQL Server 的安裝目前正在使用 SQL Server 鏡像,建議使用鏡像的 Windows NT 的功能或硬體為基礎來代替鏡像。
  • 外部聯結的語法: 與 SQL Server 6.5 '* = ' 及 ' = *' 在 WHERE 子句可以被取代 ANSI 標準的外部聯結的語法聯結語法 FROM] 子句中使用:

    LEFT OUTER JOIN、 向右鍵 OUTER JOIN,和 FULL OUTER JOIN。
  • 雙 Quoted 字串: 使用雙引號字元應該保留給分隔或引號識別項。雖然雙引號可以仍然用來分隔字元字串 (而不是物件名稱),如果執行 SET QUOTED_IDENTIFIER ON 以雙引號分隔的字串會被假設為識別項。
  • 不相等 (! =): [ANSI 標準語法代表 '不等於' 是 '< >'。這應該使用的位置 '! = ' 在所有情況下。
  • Null 比較 (= NULL): [ANSI 標準 IS NULL 而且應該在所有情況下使用。在實際上如果 SET ANSI_NULLS ON 生效,= NULL 會傳回 FALSE 在所有情況下,因為 ANSI 表示沒有值 (甚至 NULL 本身) 的值等於 NULL。
  • 追蹤旗標: SQL 追蹤應該用於監視代替使用追蹤旗標 4030 和 4032 接收緩衝區。

    根據線上叢書 》 追蹤旗標應該用來暫時解決問題,直到永久性的解決方案將放入的地方。雖然所提供的追蹤旗標資訊可以幫助您診斷問題,請記住追蹤旗標不是受支援的功能集的一部份。這表示未來的相容性或繼續的使用不確定。
停止使用的下列功能應該也被視為:
  • 區段: 使用者定義的區段通常用來造成要放在基於效能原因的特定裝置的資料庫物件。通常 multi-disk RAID 裝置的使用會提供更大的增加的效能與較低的相關管理成本。
  • 在資料程式庫 Two-Phase 認可程式庫: 的分散式交易協調器現在提供這項功能會自動。

屬性

文章編號: 152032 - 上次校閱: 2013年9月30日 - 版次: 3.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 6.5 Standard Edition
關鍵字:?
kbnosurvey kbarchive kbmt KB152032 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:152032
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com