我需要每天一次将数据从MS Access数据库导入SQl Server 2000数据库。既然我每天都需要这样做,那么自动化是否有一个能够做到这一点的c#例程?
MS Access数据库中的表将被命名为SQL Server中的相同表,它需要删除SQL Server数据库中的表,然后从MS Access导入新数据/表。
答案 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位喷气式驱动器其他明智的连接不起作用。