2010-06-29 99 views
2

我有一个Access数据库文件(TEST.MDB),我需要写一个存储过程将在TEST.MDB选择TBLTEST一些记录,并把它们插入到tbsqlTest在我sql数据库。 ==>我需要这样一个SP:从Access数据库文件选择并插入到SQL数据库的

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

这将是一个一次性事件?还是需要一直运行 - 就像在动态复制方案中一样? – Randy 2010-06-29 22:37:32

+0

正如我所说的,我需要创建一个存储过程,所以我需要像计划的作业运行此 – Asha 2010-06-29 22:45:33

回答

1

如果你愿意允许您的SQL Server上特设分布式查询,你可以使用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; 

为了让那些运行,我不得不启用特设分布式查询是这样的:

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设置为链接服务器是更安全的方式。我不知道。

-1

如果你要定期做这个; 1.创建在设计视图,你想要它做的事情,包括标准来过滤查询结果什么追加查询。 2.在SQL视图中查看查询。 3.复制SQL文本 4.在窗体上创建一个按钮。转到属性窗口,在事件选项卡下,然后选择“点击”事件。点击省略号“...”并打开代码。

使用此代码:


昏暗MyAppendString作为字符串

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

docmd.runsql MyAppendString

****************代码

每次单击该按钮结束,它将执行追加查询,硬编码与您选择的标准。

让我知道,如果你坚持在任何这些点。我会给你更详细的说明。

+0

没有形式或VB代码,我的朋友,我每个月都会收到一个mdb文件,我需要一个SP进口对我来说。 – Asha 2010-06-29 23:00:40