它似乎只能使用傳遞查詢從您的SQL Server表和MS Access中檢索數據。但另一種方式呢?從Access表到SQL服務器表。如何通過傳遞查詢將Access表中的數據追加到SQL服務器表中?
當我需要高性能時,MS Access中有哪些選項?
(具有追加查詢追加到一個鏈接表的正常方法是簡單地太慢)
在一個傳遞查詢我不能引用MS訪問表或查詢,因此我的INSERT INTO語句無法工作。有沒有通過VBA的工作?
它似乎只能使用傳遞查詢從您的SQL Server表和MS Access中檢索數據。但另一種方式呢?從Access表到SQL服務器表。如何通過傳遞查詢將Access表中的數據追加到SQL服務器表中?
當我需要高性能時,MS Access中有哪些選項?
(具有追加查詢追加到一個鏈接表的正常方法是簡單地太慢)
在一個傳遞查詢我不能引用MS訪問表或查詢,因此我的INSERT INTO語句無法工作。有沒有通過VBA的工作?
您可以在傳遞查詢中使用OPENROWSET。
SELECT id,
atext
INTO anewtable
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'z:\docs\test.accdb'; 'admin';'',table1);
你可能需要一些或所有這些選項:
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',
N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0',
N'DynamicParameters', 1
GO
我懷疑,這將是任何更快。
Access中有可能使用宏來動態創建使用SetValue的傳遞查詢定義(我認爲現在稱爲SetProperty)。基本上,您可以更新現有傳遞查詢的查詢定義,然後運行它。我曾經這樣做過,速度快了很多,但那是很久以前的事了。我可能有一段VB循環通過一個表來創建查詢。
在這個方向上的連接總是很慢,因爲Access將在本地處理所有工作,所以你不能獲得服務器的優勢。如果你有一定級別的SQL服務器訪問,那麼我總是發現最好的方法是從訪問標準txt或csv文件導出,然後使用SQL服務器的**批量插入**選項。如果您不得不從訪問端完成所有操作,那麼遺憾的是,並沒有真正的快速方法。 –
我可能會嘗試使用DAO(VBA)或ADO來比較速度。您也可以嘗試使用ADO和SQL Server存儲過程一起使用。但是我同意Matt的觀點,即你可以通過使用Access以外的其他方式來獲得最大收益。即使是.NET dll或AddIn也可以工作,因爲我相信任何人都可以使用後臺線程(儘管如此,可能會出現陷阱和打嗝)。 – HK1
感謝您的意見。看起來這似乎揭示了Access中的另一個限制,除此之外還有其他許多限制。 – MOLAP