一.使用SQL Server的数据库导入/导出功能。首先在要导入到的SQL Srever数据库上右键,选择“任务”,然后选择“导入数据”,按照提示下一步直到完成即可成功将Access数据库导入到SQL Server数据库中,此种方法如果SQLServer数据库中没有相应的数据表,则会自动创建改表,但是约束等表关系不会同步导入,如果SQLServer中有相同名称并且属性相同的数据表,则会直接将Access数据库中的对应表的数据导入。
在导入过程中,还可以通过SQL语句指定要导入的数据。
使用这种方法一般会出现以下两种错误:
(1)无法建立数据流连接
为连接管理器“{FFBF32BF-EE84-4F94-ACDB-D4C5AC4C2941}”指定的连接类型“OLEDB”未被识别为有效的连接管理器类型。当视图创建未知连接类型的连接管理器时会返回此错误。请检查连接类型名称的拼写是否正确。
(2)无法连接源组件
找不到连接“SourceConnectionOLEDB”。如果找不到特定的连接元素,Connections集合将发生此错误。
其他信息:
找不到连接“SourceConnectionOLEDB”。如果找不到特定的连接元素,Connections集合将发生此错误。
({0DE0CDBB-BCD6-4261-A118-B0CB22DA3C4A})
具体解决办法是打开SqlServerConfiguration Manage,右键单击“SqlServer Integration Services”,选择“属性”,将登录身份修改为“LocalSystem(本地系统)”,然后重新启动该服务。
二.使用Access数据库的数据升迁功能。首先点击“工具”菜单,选择“数据库实用工具”,选择“升迁向导”,这是会提示该功能尚未安装,需要安装XXX之类的信息,点击安装,等待安装成功后,即可弹出“升迁向导”对话框,按照提示下一步直到完成,即可将Access数据库导入到SQLServer数据库中。使用此种方法的好处是Access数据库中的所有数据以及表关系都会被原样导入到SQL Server数据库中。
三.使用SQL语句批量导入。1当只需要导入Access数据库中的指定表以及指定表的指定列到SQLServer数据库中时,前面的两种方法就显得不那么方便了。而使用SQL语句导入可以方便快捷的导入需要的数据。具体代码如下
(1)SQLServe数据库中已存在要导入数据的表.(这样可以事先按照要导入的Access数据库的数据表创建好需要的关系)
Insert intotable(tid,tname)SELECT id,nameFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\Shop.mdb";User ID=Admin;Password=' )...ShopGoods
(2)SQLServer数据库中不存在要存储导入数据的表.(使用下面的代码会直接在SQL Server数据库中创建相应的数据表)
SELECTid,nameINTO table(tid,tname)FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0','Data Source="c:\Shop.mdb";User ID=Admin;Password=' )...ShopGoods
其中,table是SQL Server中用来存储Access导入数据的数据表名,ShopGoods是指要导入到SQLServer中的Access数据库中的数据表名。前面的三个点不能省略。
但使用这种方法时有可能出现以下错误:
SQLServer 阻止了对组件 'Ad Hoc DistributedQueries' 的STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQLServer 联机丛书中的 "外围应用配置器"。
具体解决办法是使用如下语句启用“'AdHoc Distributed Querie”
EXECsp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'AdHoc Distributed Queries', 1 GO RECONFIGURE GO