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