我需要每天将数据从MS Access数据库导入到SQl Server2000数据库中。既然我需要每天自动完成这项工作,有没有一个c#例程可以做到这一点?
MS Access数据库中的表将被命名为SQL Server中的相同表,它需要删除SQL Server数据库中的表,然后从MS Access导入新数据/表。
发布于 2012-02-22 18:37:04
三个步骤:
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-现在您只需要从代码中调用存储过程
发布于 2012-02-22 18:35:38
一种选择是在sql server数据库中创建一个存储过程来执行此操作,请参阅此处:select from access database file and insert to sql Database
正如marc_s所提到的,您也许能够使用SSIS --但是要正确地使用SSIS,可能需要大量的学习。
另一个选择是从C#内部控制它-从access DB中提取数据,然后将其插入到sql server中-这不太可能是您想要的。
如果您的access db和sql server实例保证在同一台服务器上,那么我倾向于尝试选项1。如果不是这样,则会引发数十个额外的问题;)
编辑:你提到它可以通过点击一个按钮来完成-在这种情况下,你真的应该至少给SSIS解决方案一遍,看看它看起来是否像你想要的,它正是为这种类型的场景而设计的。
发布于 2016-01-16 20:42:32
access.mdb链接服务器在sql server的任何版本中,都应该需要Microsoft.ACE.OLEDB.12.0或Microsoft.Jet.OLEDB.4.0。这些驱动程序有32位和64位两种类型。64位os优选安装64位jet驱动程序,否则链接可能不起作用。
https://stackoverflow.com/questions/9392701
复制相似问题