SQLServer导入导出教程及错误排查
- 格式:doc
- 大小:304.50 KB
- 文档页数:18
(2)灵活度不同。
OPENDATASOURCE只能打开相应数据库中的表或视图,如果需要过滤的话,只能在SQLServer中进⾏处理。
⽽OPENROWSET可以在打开数据库的同时对其进⾏过滤,如上⾯的例⼦,在OPENROWSET中可以使⽤
SELECT*FROMtable1对abc.mdb中的数据表进⾏查询,⽽OPENDATASOURCE只能引⽤table1,⽽⽆法查询table1。
因此,OPENROWSET⽐较OPENDATASOURCE更加灵活。
2.使⽤命令⾏BCP导⼊导出数据
很多⼤型的系统不仅仅提供了友好的图形⽤户接⼝,同时也提供了命令⾏⽅式对系统进⾏控制。
在SQLServer中除了可以使⽤SQL语句对数据进⾏操作外,还可以使⽤⼀个命令⾏⼯具BCP对数据进⾏同样的操作。
BCP是基于DB-Library客户端库的⼯具。
它的功能⼗分强⼤,BCP能够以并⾏⽅式将数据从多个客户端⼤容量复制到单个表中,从⽽⼤⼤提⾼了装载效率。
但在执⾏并⾏操作时要注意的是只有使⽤基于ODBC或SQLOLEDB的API的应⽤程序才可以执⾏将数据并⾏装载到单个表中的操作。
BCP可以将SQLServer中的数据导出到任何OLEDB所⽀持的数据库的,如下⾯的语句是将authors表导出到excel⽂件中。
bcppubs.dbo.authorsoutc:\temp1.xls
-c-q-S"GNETDATA/GNETDATA"-U"sa"-P"password"。
当我们建⽴⼀个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进⾏数据检验、净化和转换时,将会⾯临很⼤的挑战。
幸好SQL Server为我们提供了强⼤、丰富的数据导⼊导出功能,并且在导⼊导出的同时可以对数据进⾏灵活的处理。
在SQL Server中主要有三种⽅式导⼊导出数据:使⽤Transact-SQL对数据进⾏处理;调⽤命令⾏⼯具BCP处理数据;使⽤数据转换服务(DTS)对数据进⾏处理。
这三种⽅法各有其特点,下⾯就它们的主要特点进⾏⽐较。
⼀、使⽤⽅式的⽐较 1. 使⽤Transact-SQL进⾏数据导⼊导出 我们很容易看出,Transact-SQL⽅法就是通过 SQL语句⽅式将相同或不同类型的数据库中的数据互相导⼊导出或者汇集在⼀处的⽅法。
如果是在不同的SQL Server数据库之间进⾏数据导⼊导出,那将是⾮常容易做到的。
⼀般可使⽤SELECT INTO FROM和INSERT INTO。
使⽤ SELECT INTO FROM时INTO后跟的表必须存在,也就是说它的功能是在导数据之前先建⽴⼀个空表,然后再将源表中的数据导⼊到新建的空表中,这就相当于表的复制(并不会复制表的索引等信息)。
⽽INSERT INTO的功能是将源数据插⼊到已经存在的表中,可以使⽤它进⾏数据合并,如果要更新已经存在的记录,可以使⽤UPDATE。
SELECT * INTO table2 FROM table1 --table1和table2的表结构相同 INSERT INTO table2 SELECT * FROM table3 --table2和table3的表结构相同 当在异构数据库之间的进⾏数据导⼊导出时,情况会变得复杂得多。
⾸先要解决的是如何打开⾮SQL Server数据库的问题。
在SQL Server中提供了两个函数可以根据各种类型数据库的OLE DB Provider打开并操作这些数据库,这两个函数是OPENDATASOURCE和OPENROWSET。
SQLServer数据导入技巧详解SQL Server是一个著名的关系型数据库管理系统,可用于管理大量的数据。
在SQL Server中,数据的导入是很重要的,不仅要保证数据的完整性和准确性,也可能涉及到大量数据的导入和处理。
为了解决这个问题,本文将向你介绍SQL Server中的数据导入技巧。
数据源首先,需要准备好要导入的数据源。
SQL Server支持多种数据源格式,包括CSV、Excel、Access、文本文件等。
其中,CSV格式是最常用的一种格式。
CSV文件是使用逗号分隔的纯文本文件,可以使用文本编辑器打开和修改。
有些软件还支持用Excel导入CSV文件生成。
在使用CSV格式时,需要注意在字段中间不应该加上逗号。
如果有逗号,可以将该字段用双引号括起来。
Excel文件也是常见的数据源格式,但是使用Excel文件进行数据导入,需要注意文件的格式和内容。
特别是在使用中文进行数据导入时,很容易出现编码问题。
这时候需要将文件另存为UTF-8格式的文件,再进行导入。
Access格式和文本文件也可以用于数据导入,但是需要注意文件的格式和内容,如果格式不对,导入时也可能会出现问题。
使用导入向导在SQL Server中,可以使用导入和导出向导来帮助我们完成数据导入。
使用导入向导时,需要选择数据源类型、连接字符串和导入的目标表等参数。
不同的数据源类型需要选择不同的数据源驱动程序。
然后,可以使用“预览”和“编辑映射”来调整导入的数据,以确保数据的完整性和准确性。
对于大量数据的导入,我们可以使用批量插入方法,将数据以批次的方式插入到数据库中。
这种方式可以提高导入速度,减少系统开销。
同时,还可以使用并行操作来提高数据导入的速度。
导入存储过程除了导入向导之外,我们还可以使用存储过程来完成数据导入。
存储过程是SQL Server中一种特殊的程序单元,可以将复杂的业务逻辑和数据处理操作封装起来,提高系统的安全性和可维护性。
在SQL Server2005中数据导入导出时出错
向SQL Server2005里导入数据是出现错误“SQL 错误描述为: 链接服务器'(null)' 的OLE DB 访问接口'STREAM' 返回了对列'[!BulkInsert].field' 无效的数据”,已打了SQL Server2005的最新补丁,在SQL Server2008里有同样的问题。
BaiDu了下,有人说好像是SQL 2005的一个未公开的Bug,在SQL Server2000里没有这样的问题。
解决:
在SQL Server启动过程中增加参数4808。
1. 在SQL Server 配置管理器中,单击“SQL Server 服务”。
2. 在右窗格中,右键单击SQL Server (<实例名>),再单击“属性”。
3. 在“高级”选项卡的“启动参数”框中,键入“;-T4808”(加分号和-T4808)。
4.设置完成后,重启SQL Server服务,在查询分析器中执行“DBCC tracestatus”,返回结果:
表明参数设置成功。
我正在玩搜狐微博,快来“关注。
SQL2000数据库导出和导入教程SQL Server 2000是一种关系型数据库管理系统,支持大型数据库和各种应用程序。
它提供了导出和导入数据的功能,使用户可以将数据从一个数据库导出到另一个数据库,或者从一个数据库导入到另一个数据库。
下面是SQL Server 2000数据库导出和导入的教程。
导出数据:1. 打开SQL Server 2000管理工具,选择要导出数据的数据库。
2.选择“任务”菜单,然后选择“导出数据”选项。
3.在“数据源”对话框中,选择要导出的表或视图。
您还可以指定一个查询来选择特定的数据。
4.在“目标”对话框中,选择将数据导出到的目标数据库或文件。
您可以选择导出到同一服务器上的另一个数据库,或者导出到一个文件。
5.确定导出选项,例如导出可变宽度的文本文件或固定宽度的文本文件,以及使用逗号作为字段分隔符或制表符作为字段分隔符。
6.单击“完成”按钮开始导出过程。
导入数据:1. 打开SQL Server 2000管理工具,选择要导入数据的数据库。
2.选择“任务”菜单,然后选择“导入数据”选项。
3.在“数据源”对话框中,选择包含要导入的数据的数据库或文件。
如果您选择一个文件,您需要指定文件类型和文件位置。
4.在“目标”对话框中,选择要导入数据的目标表或视图。
您还可以选择创建一个新的表来存储导入的数据。
5.如果需要的话,可以在“转换”对话框中进行必要的数据转换。
例如,您可以选择将一个日期字段的格式从YYYYMMDD转换为YYYY-MM-DD。
6.确定导入选项,例如是否忽略导入中的重复行,以及在导入过程中要使用的事务类型。
7.单击“完成”按钮开始导入过程。
导出和导入数据可能会花费一些时间,具体时间取决于数据的大小和服务器的性能。
在导出和导入过程中,您可以查看进度和错误信息。
除了使用SQL Server 2000管理工具进行导出和导入,还可以使用SQL命令进行导出和导入。
例如,您可以使用SELECT INTO语句将数据导出到一个新的表中,然后使用INSERT INTO语句将数据从一个表导入到另一个表中。
sqlserver:错误0xc02020a1:数据流任务1:数据转换失败。
列“列0”的数据。
问题如下:错误 0xc02020a1: 数据流任务 1: 数据转换失败。
列“离⽹时间”的数据转换返回状态值 2 和状态⽂本“由于可能丢失数据,所以⽆法转换该值。
”。
(SQL Server 导⼊和导出向导)错误 0xc0209029: 数据流任务 1: SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。
“源 - YYT_ZHB1_txt.输出[平⾯⽂件源输出].列[离⽹时间]”失败,错误代码为 0xC0209084,⽽且针对“源 - YYT_ZHB1_txt.输出[平⾯⽂件源输出].列[离⽹时间]”的错误⾏处理设置指定⼀旦出错就失败。
在指定组件的指定对象上出错。
可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQL Server 导⼊和导出向导)错误 0xc0202092: 数据流任务 1: 处理⽂件“E:\work\渠道规划\2020年联通营业厅规划\甲⽅数据\移⽹话单数据.rar,北京渔⽹-⾯.rar,字段名称.xlsx\移⽹话单数据\YYT_ZHB1.txt”的数据⾏ 1 时出错。
(SQL Server 导⼊和导出向导)错误 0xc0047038: 数据流任务 1: SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。
源 - YYT_ZHB1_txt 的 PrimeOutput ⽅法返回了错误代码 0xC0202092。
管道引擎调⽤ PrimeOutput() 时该组件返回了⼀个失败代码。
虽然该失败代码只与该组件有关,但这个错误是致命的,管道已停⽌执⾏。
可能在此之前已经发出错误消息,提供了有关失败的详细信息。
(SQL Server 导⼊和导出向导)解决办法:第⼀步:点击⾼级第⼆步:将内容含有中⽂的列的“DataType” 换成 "Uncode 字符串 [DT_WSTR]"第三步:继续操作。
SQLServer安装使用报错及解决方案在SQLServer的安装和使用过程中,可能会遇到一些报错信息,这些问题需要及时解决才能顺利进行数据库的操作。
本文将介绍一些常见的SQLServer安装使用报错,并提供相应的解决方案,帮助读者更好地应对这些问题。
一、无法安装SQLServer在安装SQLServer过程中,有时会出现无法继续安装的情况。
这可能是由于操作系统版本不兼容、安装文件损坏或其他原因引起的。
解决此问题的方案如下:1.检查操作系统版本:确保所使用的操作系统版本与SQLServer的系统要求相匹配。
2.重新下载安装文件:如果安装文件损坏,可尝试重新下载安装文件,并确保下载的文件完整可用。
3.运行安装程序时使用管理员权限:右键点击安装程序,选择“以管理员身份运行”以确保安装过程中拥有足够的权限。
二、无法连接到SQLServer在使用SQLServer时,可能会遇到无法连接到数据库的问题。
这可能是由于网络配置、服务未启动或防火墙设置等原因引起的。
以下是解决此问题的一些常见方法:1.检查网络配置:确保网络连接正常,数据库服务器所在的IP地址、端口号、实例名等配置信息正确。
2.确保SQLServer服务已启动:在Windows服务中,找到SQL Server服务并确认其状态为“运行中”。
3.检查防火墙设置:确保防火墙未阻止数据库连接请求,可在防火墙设置中配置允许使用的端口。
三、数据库文件损坏有时,在使用SQLServer时,数据库文件可能会损坏,导致无法正常读取或写入数据。
以下是一些解决此问题的方法:1.运行数据库维护工具:SQLServer提供了一些内置的维护工具,如SQL Server Management Studio,可用于修复损坏的数据库文件。
2.还原备份文件:如果有可用的备份文件,可以使用SQLServer的还原功能将备份文件还原到正常状态。
3.使用修复命令:SQLServer提供了一些修复命令,如DBCC CHECKDB,可用于检查和修复损坏的数据库文件。
SQLServer2012使⽤导⼊和导出向导时,⽤sql语句作为数据源,出现数据源类型会变。
⽤MS SqlServer2012进⾏数据导出时,使⽤的查询语句导出,但是出现了错误:“发现 xx个未知的列类型转换您只能保存此包“点击列查看详细错误信息时,可以看到:[源信息]源位置: 192.168.1.97源提供程序: SQLNCLI11表: [查询]列: ItemSize列类型: 203SSIS 类型: (类型未知...)映射⽂件(到 SSIS 类型): C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\MSSQLToSSIS10.XML[⽬标信息]⽬标位置: C:\Users\Administrator\Desktop\⽕星公司_测试_发货单_201705181134.xls⽬标提供程序: Microsoft.Jet.OLEDB.4.0表: `查询`列: ItemSize列类型: VarCharSSIS 类型: Unicode 字符串 [DT_WSTR]映射⽂件(到 SSIS 类型): C:\Program Files (x86)\Microsoft SQL Server\110\DTS\MappingFiles\JetToSSIS.xml[转换步骤]转换未知...SSIS 转换⽂件: C:\Program Files (x86)\Microsoft SQL Server\110\DTS\binn\DtwTypeConversion.xml在CSDN的⼀个帖⼦中查到,⼀些信息:上⾯链接中介绍:描述当输⼊检索通过⼀个查询使⽤SQL Server导⼊和导出向导在SQL Server 2012中的数据,VARCHAR类型被公认为是“200”⽽nvarchar类型“202”。
这导致向导显⽰“审查”的数据类型的警告/错误类似于以下内容:14未知列类型转换(S)你只能拯救pack 在品论中有⼈指出,可以将你的查询语句,创建成视图,然后⽤视图导出就正常了,我没有试过。
一、导出导入SQL Server里某个数据库1.在SQL Server企业管理器里选中要转移的数据库,按鼠标右键,选所有任务->备份数据库。
2.备份选数据库-完全,目的备份到按添加按钮文件名在SQL Server服务器硬盘下输入一个自定义的备份数据库文件名(后缀一般是bak)重写选重写现有媒体最后按确定按钮。
如果生成的备份数据库文件大于1M,要用压缩工具压缩后再到Internet上传输。
3.通过FTP或者remote desktop或者pcanywhere等方法把第二步生成的备份数据库文件或者其压缩后的文件传到目的SQL Server数据库,如果有压缩要解压。
4.目的SQL Server数据库如果还没有此数据库,先创建一个新的数据库;然后选中这个新创建的数据库,按鼠标右键,选所有任务->还原数据库还原->从设备->选择设备->磁盘->添加(找到要导入的备份数据库文件名)->确定还原备份集->数据库-完全最后按确定按钮。
完全的数据库导入成功了。
(如果在已经存在的SQL Server数据库上还原数据库可能遇到有还有其它人正在使用它而恢复操做失败,可以去看->管理->当前活动->锁/对象->找到数据库下锁的进程号->到查询分析器里用kill进程号杀掉这些锁,然后再做还原)注意:如果在原有的目的SQL Server数据库上从备份文件(*.bak)还原数据库会把已经存在的表、存储过程等数据库对象全部替换成最近这次导入的备份数据库里的内容。
如果一定要还原备份文件(*.bak)里部分数据,需要另外建一个新数据库,其逻辑名称和数量同备份文件(*.bak)里数据库的逻辑名称和数量一致;新数据库的物理文件名称取得一定要和备份文件(*.bak)里数据库的物理文件不一样才行。
二、导出导入SQL Server里某个表1.没有防火墙,同一个局域网里或不在同一个局域网里,但通过Internet可以互相访问在SQL Server企业管理器里选中目的数据库,按鼠标右键,选所有任务->导入数据-> 弹出数据转换服务导入/导出向导窗口->下一步->选数据源-> 数据源(用于SQL Server的Microfost OLE DB 提供程序)->服务器(可选择局域网内能访问到的所有SQL Server服务器,或者直接输入IP地址)->选择使用windows身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->选择目的->目的(用于SQL Server的Microfost OLE DB提供程序)->服务器(默认为上一步里选中的导出服务器,也可以选其它局域网内能访问到的所有SQL Server服务器,或者直接输入IP地址)->目的数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择源表和视图->在要导入的表和视图前面选中源->目的出现同样的表名(可以手工修改成别的表名)->转换->列映射和转换里面可以修改源表和目的表之间字段的对应关系,修改目的表字段的类型和长度等,并可以选择创建目的表,在目的表中增加行,除去并重新创建目的表,启用标志插入等选项->确定->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出导入数据,选调度DTS包以便以后执行)->保存(可以不选)->[ 保存DTS包(如果以后还要转移这批相同的数据,可以把本次导出导入的内容和步骤保存起来,存到SQL Server即可,保存的时候要输入DTS的包名及详细描述)->下一步-> ]->完成正在执行包->图形界面显示创建表及插入记录的步骤和状态->完成2.经过防火墙,不在同一个局域网里①、导出表里的数据到文本文件:在SQL Server企业管理器里选中目的数据库,按鼠标右键,选所有任务-> 导入数据->弹出数据转换服务导入/导出向导窗口->下一步->选数据源-> 数据源(用于SQL Server的Microfost OLE DB提供程序)->服务器(可选择局域网内能访问到的所有SQL Server服务器)->选择使用windows 身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->选择目的->目的(文本文件)-> 文件名(在自己的电脑硬盘中生成一个自定义的文本文件) ->下一步->制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->选择目的文件格式->源(选择要导出的表)->用默认的带分隔符->选第一行包含有列名称选项->下一步->保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出到文本文件,选调度DTS包以便以后执行)->保存(可以不选)-> [保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成正在执行包->图形界面显示表到文本文件的步骤和状态->完成如果生成的文本文件大于1M,要用压缩工具压缩后再到Internet上传输。
1、打开本地企业管理器,先创建一个SQL Server注册来远程连接服务器端口SQL Server。
步骤如下图:图1:2、弹出窗口后输入内容。
"总是提示输入登陆名和密码"可选可不选,如图2。
图2:3、注册好服务器后,点击打开。
如果是选择了"总是提示输入登陆名和密码"的话再点了确定后会提示输入用户密码,如图3。
图3:4、进入后,选择到您的数据库,如testdb。
在上面点右键,"所有任务">>"导入数据",如图4。
图4:5、进入DTS导入/导出向导,点击“下一步”按钮继续6、选择数据源,输入数据源所在的数据库服务器名称、用户名、密码和要复制数据的源数据库,点击“下一步”按钮7、选择“在SQL Server数据库之间复制对象和数据”方式,点“下一步”继续图7:8、这一步可以把"包括扩展属性"和"排序规则"两个选择上。
接着去掉左下的"使用默认选项",点击右下角的"选项"来进行配置。
图8:9、图8中点"选项"后会弹出图9,把"复制数据库用户和数据库角色"与"复制对象级权限"两个选项去掉,点确定回到图8接着点"下一步"进到图10。
10、设定调度方式,一般选“立即运行”就可以,然后点“下一步”继续11、点"完成"开始执行。
图11:12、正在进行数据导入中图12:13、如果一切正常,提示成功复制如图13,那就大功告成了。
图13:如果提示导入失败,出现图14情况,这时不要急着点"完成"关闭窗口。
双击中间的"出现错误"会出现详细的失败原因。
图14:错误原因一、没安装SP3补丁如果是出现如图15的报错原因,那么就很有可能是因为您本机的SQL Server 还没有打SP3补丁。
图15:如何查看是否已打了SP3补丁呢?右键点击本地SQL Server属性,弹出图16窗口,查看"产品版本"一行。
像以下图显示8.00.760(SP3)说明已经打过补丁。
如果您的企业管理器显示的版本要比这个小,那就是没打 SP3 补丁。
请安装 SQL Server SP3 补丁后再重试。
图 16:错误原因二、 错误原因二、对象属性冲突 如果出现图 17 情况,那么应该就是您本地数据库的表/视图/存储过程的属主和 服务器上数据库默认用户不一致。
服务器的用户一般是:数据库名+'_f',如我的数据库名称是 testdb,则我在服 务器上使用的数据库用户名就是 testdb_f。
如图 18,我本地的表属主是 testuser,与服务器数据库用户名不一致,因此导 入过程出错。
图 17:图 18:解决方法是: 应该先把本地的所有表/视图/存储过程属主都改为 dbo 或 testdb_f(后者需要 在本地创建起相应用户。
建议创建,否则以后想从服务器上导出数据时同样会因为这个问题导出错误), 再重新进行导入/导出。
打开 SQL 查询分析器,运行以下命令进行批量修改表属主为 dbo: exec sp_MSForEachTable 'sp_changeobjectowner "?", "dbo"'运行成功后表属主会改变成如图 19:图 19:如果需要修改视图/存储过程,则麻烦了点。
下面有个方法可以实现: 一、先在 master 创建一个 sp_MSforeachObject 存储过程,命令如下: USE MASTERGOCREATE proc sp_MSforeachObject@objectType int=1,@command1 nvarchar(2000),@replacechar nchar(1) = N'?',@command2 nvarchar(2000) = null,@command3 nvarchar(2000) = null,@whereand nvarchar(2000) = null,@precommand nvarchar(2000) = null,@postcommand nvarchar(2000) = nullas/* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to itsown result set *//* @precommand and @postcommand may be used to force a single result set via a temp table. *//* Preprocessor won't replace within quotes so have to use str(). */declare @mscat nvarchar(12)select @mscat = ltrim(str(convert(int, 0x0002)))if (@precommand is not null)exec(@precommand)/* Defined@isobject for save object type */Declare @isobject varchar(256)select @isobject= case @objectType when 1 then 'IsUserTable'when 2 then 'IsView'when 3 then 'IsTrigger'when 4 then 'IsProcedure'when 5 then 'IsDefault'when 6 then 'IsForeignKey'when 7 then 'IsScalarFunction'when 8 then 'IsInlineFunction'when 9 then 'IsPrimaryKey'when 10 then 'IsExtendedProc'when 11 then 'IsReplProc'when 12 then 'IsRule'end/* Create the select *//* Use @isobject variable isstead of IsUserTable string */EXEC(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid), N'']'', N'']]'') + '']'' + ''.'' + ''['' +REPLACE(object_name(id), N'']'', N'']]'') + '']'' from dbo.sysobjects o '+ N' where OBJECTPROPERTY(o.id, N'''+@isobject+''') = 1 '+N' and o.category > ' + @mscat + N' = 0 '+ @whereand)declare @retval intselect @retval = @@errorif (@retval = 0)exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3if (@retval = 0 and @postcommand is not null)exec(@postcommand)return @retvalGO二、再运行以下命令批量修改表、触发器、视图、存储过程的属主(需要先在 master 创建 sp_MSforeachObject 存储过程) EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=1EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=2EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=3EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=4此时再重新进行导入应该就能一切顺利了。
。