由于本次接到的任务是从其他服务器导入数据到我们的服务器上,由于数据库,表字段不一样所以我们的服务器上建了一些中间表。我想把服务器上中间表中的数据导入到自己机子来做测试。
思路一:登录服务器导出数据,却找不到“任务”——“导入数据”/“导出数据”选项。
思路二:
(1)在自己的机子上链接上服务器上的数据库,“任务”——“导出数据”
(2)或在自己机子上的数据库上“任务”——“导入数据”
选择通过sql server数据源方式来链接出现远程服务器链接不上。
是不是数据源不行,那就改为txt文本文件或Excel文件。
当我用txt文本文件,一步步操作,到最后却报
消息
* 错误 0xc00470fe: 数据流任务: 产品级别对于 组件“源 - TestDB01$”(1) 而言不足。
(SQL Server 导入和导出向导)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
查看我机子上的SQL SERVER 2005的版本为9.0.1399,而服务器上的是9.0.3024
网上查了一下,解释为:
原来没有装SPK1
您有沒有安裝 SQL Server 2005 SP1 ,若沒有的話,請記得安裝,建議您順便安裝 SQL Server 2005 的累積 Hotfix 套件 (組建 2153)。
欲查詢所使用的 SQL Server 2005 版本,可以造訪此網頁:如何得知目前SQL Serer 2005的Service Pack是那個版本?。
再次宣告失败。
思路三:
查看《SQL SERVER 2005性能调校》书本上关于“大量数据加载”,其中介绍了几种命令的方式。
先把远程服务器上的数据表里的记录查询出来保存到一个文本文件里,然后采用下面的命令方式:
方式一:
bcp mloa..tb_property in tb_property.txt -c -t,-Sservername -Usa -Ppassword -h "CHECK_CONSTAINTS"
方式二:
BULK INSERT mloa..tb_property FROM 'c:/tb_property.txt' WITH (DATAFILETYPE='char',FIELDTERMINATOR=',',CHECK_CONSTRAINTS)
方式一尝试失败,原因还未查出。方式二成功。书上介绍说,方式二对于旧版本具有兼容性。不知是不是该原因导致方式一失败。
注意:在用方式二时,当执行命令时有可能报
……
第533 行、第9 列(State)出现大容量加载数据转换错误(截断)。
消息4865,级别16,状态1,第1 行
由于超过了最大错误数(10),无法进行大容量加载。
消息7399,级别16,状态1,第1 行
链接服务器"(null)" 的OLE DB 访问接口"BULK" 报错。提供程序未给出有关错误的任何信息。
消息7330,级别16,状态2,第1 行
无法从链接服务器"(null)" 的OLE DB 访问接口"BULK"提取行。
导致的原因:
字段类型问题:把需要导入数据的那个表的字段类型改为varchar型的,导完数据后一定记得再改回来。
数据表中的某字段的值里包含了分隔符,这样导致另一个字段出现该问题。更改分隔符。
Sql server 2005文本输出格式设置:
工具——选项——查询结果——SQL Server——以文本格式显示结果
在右边设置即可,关闭原来的查询窗口,点击“新建查询”。