Access数据库移植到SQL Server7(3)
移植微软 Access查询到Transact-SQL脚本
大多数Access查询应该被翻译成存储过程和视图。然而,应用程序开发人员很少运行一些语句可以作为一个Transact-SQL脚本存储,这是一个文件扩展名为.sql的文本文件。这些文件可以从SQL Server查询分析器中运行。
如果你计划把你的一些Access查询转换为.sql文件,考虑把Transact-SQL语句分成几个脚本,具体操作要根据如何使用这些语句而定。例如,你可以把那些必须以同一频率运行的Transact-SQL语句组合到一个脚本中。另一个脚本可能包含那些只能在特定条件下运行的Transact-SQL语句。另外,那些必须按一定的顺序执行的Transact-SQL语句应该组合在一个离散脚本中。
要把一个Access语句转换为Transact-SQL文件:
复制该语句到SQL Server查询分析器。
使用蓝色的检查标记图标解析语句。
如果合适就执行语句。
MAKE TABLE 语句在SQL Server中有几种转换方式。开发人员可以创建下面任意一种视图
视图创建一个动态的、提供最新信息的虚拟临时表格的效果。这是I/O密集的,因为每次列举一个查询时就要重新加入数据表。
临时表
临时表为一个连接用户会话创建一个数据快照。你可以创建局部和全局临时表。局部临时表只能在当前会话中是可视的;全局临时表对所有会话都是可视的。局部临时表的前缀用单一的数字符号命名(#table_name),全局临时表的前缀用两个数字符号命名(##table_name)。对临时表的查询运行得很快,因为它们通常只使用一个表格而不是动态的连接几个表来获得一个结果集。
在SQL SERVER7.0中数据变换服务(DTS)允许你通过创建包实现临时表创建的标准化、自动化和定期计划执行。
例如,当你移植Access 2.0 Northwind示例数据库时,为季度数据报告而创建的交叉表被转换为一个视图或者是在常规基础上创建临时表的数据转换。
附加设计考虑
下面是一些当你把你的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