2012-02-22 135 views
1

我需要每天一次將數據從MS Access數據庫導入SQl Server 2000數據庫。由於我需要這個每天都要完成的自動化是否有一個C#例程能夠做到這一點?C#將MS-Access數據庫導入到SQL Server中?

MS Access數據庫中的表將被命名爲SQL Server中的相同表,並且它需要刪除SQL Server數據庫中的表,然後從MS Access中導入新的數據/表。

+2

聽起來像[SQL Server集成服務]的工作(http://msdn.microsoft.com/en-us/library/ms141026.aspx) – 2012-02-22 10:18:50

+0

沒有我知道的自動進程(在C#中)。這些表格會變大嗎?這可能會影響解決方案的選擇。 – dice 2012-02-22 10:19:36

+0

是的,其中一些將是 – Beginner 2012-02-22 10:23:29

回答

0

三個步驟:

1 - 創建SQLServer的一個LinkedServer這樣的:
EXEC master.dbo.sp_addlinkedserver @server = 'Customers', @srvproduct = 'CustomersDB', @provider = 'Microsoft.Jet.OLEDB.4.0', @datasrc = 'C:\inetpub\wwwroot\ftp\AccessDB.MDB', @location = '', @provstr = '', @catalog = ''
EXEC master.dbo.sp_serveroption @server = 'Customers', @optname = 'collation compatible', @optvalue = 'false'

2 - 創建目標SQLSERVER內的存儲過程執行導入工作
CREATE PROCEDURE ImportMDBData
as
TRUNCATE TABLE sqlServerCustTable
INSERT INTO sqlServerCustTable (list your columns name here) (SELECT * FROM Customers.dbo.mdbCustTable)

3 - 現在,你只需要在代碼中調用存儲過程

+0

對不起,我從來沒有創建過存儲過程,在上面我要用什麼來替換?我的兩個數據庫目前被稱爲accessDB和sqlDB .. accessDB是在C:\ inetpub \ wwwroot \ ftp – Beginner 2012-02-22 10:59:32

+0

也我需要每個表的存儲過程呢?我有11個表 – Beginner 2012-02-22 11:00:44

+0

好吧,你應該用你的sqlserver表的列名替換(在這裏列出你的列名)。不,你不需要每個表的存儲過程,只需重複TRUNCATE和SELECT INTO語句將相關表的名稱更改爲相同的存儲過程 – Steve 2012-02-22 11:04:12

1

一個選項是在你的SQL Server數據庫,這樣做是爲了創建一個存儲過程,在這裏看到: select from access database file and insert to sql Database

正如由marc_s提到您可以使用SSIS - 但也可能有相當多的學習涉及獲得該權利。

另一個選擇是從C#內部控制它 - 從訪問數據庫中提取數據,然後將其插入到sql服務器 - 這不太可能是你想要的。

如果你的Access數據庫和SQL Server實例都保證在同一臺服務器上的話,我會傾向於如果沒有,那麼它開闢了幾十個其他問題嘗試選擇1;)

編輯: 你提到它可以通過點擊一個按鈕來完成 - 在這種情況下,你應該至少給SSIS解決方案一次,看看它是否看起來像你想要的,它是專門爲這種類型的場景而設計的。

0

access.mdb鏈接服務器的SQL Server版本的任何,應該需要Microsoft.ACE.OLEDB.12.0或Microsoft.Jet .OLEDB.4.0。這些驅動程序存在兩種類型的32位和64位。 64位的操作系統喜歡安裝64位噴射驅動器,其他明智的連接不可能工作。

相關問題