【问题标题】:select from access database file and insert to sql Database从访问数据库文件中选择并插入到 sql 数据库
【发布时间】:2010-06-29 22:34:44
【问题描述】:

我有一个访问数据库文件 (test.mdb),我需要编写一个存储过程,它将从 test.mdb 中的 tblTest 中选择一些记录,并将它们插入到我的 sql 数据库中的 tbsqlTest 中。 ==> 我需要这样的 SP:

BEGIN
    select * into tblTest from [test.mdb].[tblTest]
    where (my condition)
END

【问题讨论】:

  • 这是一次性活动吗?还是需要一直运行 - 就像在动态复制方案中一样?
  • 正如我所说,我需要创建一个存储过程,所以我需要像计划作业一样运行它

标签: sql sql-server ms-access


【解决方案1】:

如果您愿意在 SQL Server 上允许 Ad Hoc 分布式查询,您可以使用 OPENDATASOURCE 从 MDB 文件中检索数据。

SELECT * INTO dbo.TestAccess FROM OPENDATASOURCE(
'Microsoft.Jet.OLEDB.4.0',
'Data Source="\\server\share\somefolder\scratchpad.mdb"')...MyTable;

或者在创建目标表之后,您可能更喜欢:

INSERT INTO dbo.TestAccess 
SELECT * FROM OPENDATASOURCE(
'Microsoft.Jet.OLEDB.4.0',
'Data Source="\\server\share\somefolder\scratchpad.mdb"')...MyTable;

为了让它们运行,我必须像这样启用 Ad Hoc 分布式查询:

sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE WITH OVERRIDE;
GO

我找到了配置说明 on TechNet,但在我添加 WITH OVERRIDE 之前它对我不起作用。

编辑:我在您的问题中添加了一个 sql-server 标记,因为我想知道我的建议是否具有愚蠢的风险。也许将 MDB 设置为链接服务器是一种更安全的方式。我不知道。

【讨论】:

    【解决方案2】:

    如果您打算定期这样做; 1.在设计视图中创建一个附加查询,执行您希望它执行的操作,包括过滤查询结果的条件。 2.在SQL视图中查看查询。 3.复制SQL文本 4. 在表单上创建一个按钮。转到属性窗口,在事件选项卡下,选择“点击时”事件。点击省略号“...”并打开代码。

    使用此代码:


    将 MyAppendString 调暗为字符串

    MyAppendString = "(代码行 1)" & _ “(代码行 2)” & _ "(最后一行)​​";

    docmd.runsql MyAppendString

    ****************代码结束

    每次单击按钮时,它都会执行附加查询,并使用您选择的条件进行硬编码。

    如果您坚持其中任何一点,请告诉我。我会向您发送更详细的说明。

    【讨论】:

    • 没有form或者vb代码我的朋友,我每个月都会收到一个mdb文件,我需要一个sp来帮我导入。
    猜你喜欢
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多