移植微軟 Access查詢到Transact-SQL腳本 大多數Access查詢應該被翻譯成存儲過程和視圖。然而,應用程序開發(fā)人員很少運行一些語句可以作為一個Transact-SQL腳本存儲,這是一個文件擴展名為.sql的文本文件。這些文件可以從SQL Server查詢分析器中運行。
如果你計劃把你的一些Access查詢轉換為.sql文件,考慮把Transact-SQL語句分成幾個腳本,具體操作要根據如何使用這些語句而定。例如,你可以把那些必須以同一頻率運行的Transact-SQL語句組合到一個腳本中。另一個腳本可能包含那些只能在特定條件下運行的Transact-SQL語句。另外,那些必須按一定的順序執(zhí)行的Transact-SQL語句應該組合在一個離散腳本中。
要把一個Access語句轉換為Transact-SQL文件:
復制該語句到SQL Server查詢分析器。 使用藍色的檢查標記圖標解析語句。 如果合適就執(zhí)行語句。 MAKE TABLE 語句在SQL Server中有幾種轉換方式。開發(fā)人員可以創(chuàng)建下面任意一種: 視圖 視圖創(chuàng)建一個動態(tài)的、提供最新信息的虛擬臨時表格的效果。這是I/O密集的,因為每次列舉一個查詢時就要重新加入數據表。
臨時表 臨時表為一個連接用戶會話創(chuàng)建一個數據快照。你可以創(chuàng)建局部和全局臨時表。局部臨時表只能在當前會話中是可視的;全局臨時表對所有會話都是可視的。局部臨時表的前綴用單一的數字符號命名(#table_name),全局臨時表的前綴用兩個數字符號命名(##table_name)。對臨時表的查詢運行得很快,因為它們通常只使用一個表格而不是動態(tài)的連接幾個表來獲得一個結果集。 關于臨時表的更多信息,見SQL Server Books Online。
在SQL SERVER7.0中數據變換服務(DTS)允許你通過創(chuàng)建包實現臨時表創(chuàng)建的標準化、自動化和定期計劃執(zhí)行。 例如,當你移植Access 2.0 Northwind示例數據庫時,為季度數據報告而創(chuàng)建的交叉表被轉換為一個視圖或者是在常規(guī)基礎上創(chuàng)建臨時表的數據轉換。關于DTS的更多信息,參見SQL Server Books Online。
附加設計考慮 下面是一些當你把你的Access應用程序移植到SQL Server時應該考慮的問題。
使用參數 帶參數的SQL Server存儲過程需要一種來自Access查詢的不同的語法,例如:
Access 2.0: 查詢名稱:Employee Sales By Country, in NWIND.mdb:
PARAMETERS [Beginning Date] DateTime, [Ending Date] DateTime; SELECT Orders.[Order ID], [Last Name] & ", " & [First Name] AS Salesperson, Employees.Country, Orders.[Shipped Date], [Order Subtotals].Subtotal AS [Sale Amount]
FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON Orders.[Order ID] = [Order Subtotals].[Order ID]) ON Employees. [Employee ID] = Orders.[Employee ID]
WHERE (((Orders.[Shipped Date]) Between [Beginning Date] And [Ending Date]))
ORDER BY [Last Name] & ", " & [First Name], Employees.Country, Orders.[Shipped Date];
SQL Server 7.0: CREATE PROCEDURE EMP_SALES_BY_COUNTRY @BeginningDate datetime,
@EndingDate datetime
AS
SELECT Orders.[Order ID], [Last Name] + ", " + [First Name] AS Salesperson, Employees.Country, Orders.[Shipped Date], [Order Subtotals].Subtotal AS [Sale Amount] FROM Employees INNER JOIN (Orders INNER JOIN [Order Subtotals] ON Orders.[Order ID] = [Order Subtotals].[Order ID]) ON Employees.[Employee ID] = Orders. [Employee ID]
WHERE (((Orders.[Shipped Date]) Between @BeginningDate And @EndingDate))
ORDER BY [Last Name] + ", " + [First Name], Employees.Country, Orders.[Shipped Date]
GO
更多信息,請參看SQL Server Book Online
出處:Microsoft
責任編輯:帥青蛙
上一頁 Access 數據庫移植到 SQL Server7.0 [2] 下一頁 Access 數據庫移植到 SQL Server7.0 [4]
◎進入論壇網絡編程版塊參加討論
|