C#将MS-Access数据库导入SQL Server?

时间:2012-02-22 10:07:29

标签: c# sql-server-2008 ms-access

我需要每天一次将数据从MS Access数据库导入SQl Server 2000数据库。既然我每天都需要这样做,那么自动化是否有一个能够做到这一点的c#例程?

MS Access数据库中的表将被命名为SQL Server中的相同表,它需要删除SQL Server数据库中的表,然后从MS Access导入新数据/表。

3 个答案:

答案 0 :(得分:1)

一个选项是在sql server数据库中创建一个存储过程来执行此操作,请参见此处: select from access database file and insert to sql Database

正如marc_s所提到的,你可能可以使用SSIS - 但是为了做到这一点,可能会有相当多的学习。

另一个选择是从C#中控制它 - 从访问数据库中提取数据然后将其插入到sql server中 - 这不太可能是你想要的。

如果您的访问数据库和sql server实例保证在同一台服务器上,那么我倾向于尝试选项1.如果没有,那么它会打开其他几十个问题;)

编辑: 你提到它可以通过单击一个按钮来完成 - 在这种情况下,你应该至少给SSIS解决方案一次,看看它是否像你想要的那样,它是专为这种类型的场景而设计的。

答案 1 :(得分: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 - 现在您只需要从代码中调用存储过程

答案 2 :(得分:0)

在sql server中的access.mdb链接服务器的任何版本,都需要Microsoft.ACE.OLEDB.12.0或Microsoft.Jet.OLEDB.4.0。那些驱动程序存在两种类型32位和64位。 64位操作系统更喜欢安装64位喷气式驱动器其他明智的连接不起作用。