访问升迁:迁移旨在本地运行的查询

时间:2014-12-11 17:49:08

标签: sql sql-server ms-access

我在需要移动到SQL Server的大型旧版MS Access应用程序中有许多查询。但是,这些查询从未设计为在共享上下文中运行;其中大多数是Access报告的记录源。

嵌入在大多数查询中,是与另一个开发人员创建的本地_ParameterInput表的连接。此表用于将参数传递到Access查询。作为本地表,它嵌入在前端应用程序中,而不是后端MDB中。整个应用程序中的大量代码假定_ParameterInput表的内容特定于当前用户。

我的问题是:我有哪些选项来迁移依赖于这样的本地表的查询?这是我到目前为止所提出的:

  1. 表值函数。我可以(痛苦地)将每个查询重写为表值函数,以便可以直接将参数传递给它。有几百个查询依赖于这样的本地表,所以这条路线不太理想。

  2. SQL Server临时表,Access以某种方式链接到它。现有的本地_ParameterInput表可以成为服务器上#ParameterInput的链接。我不知道如何在运行时初始化它,因此不需要通过显式调用存储过程来创建它。

  3. 在一天结束时,我必须选择一个能够实现目标的解决方案,但理想情况下,我正在寻找一些不涉及数百个查询和可能数千个VBA功能的内容。

    感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我处理了Ron Tornambe的评论,这实际上是我想出来的。我将现有表从_ParameterInput重命名为ParameterInput(没有下划线),然后创建了一个视图来对表进行别名。

CREATE VIEW dbo._ParameterInput
AS
    SELECT * FROM [ParameterInput]
    WHERE [ParameterInput].[UserSID] = SUSER_SID();

我相信这种方法应该能够满足我的需求,尽管我还没有进行过广泛的测试。

相关问题