2010-06-29 109 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