SQL Server数据导入向导使用来自其他服务器的查询

时间:2010-03-05 16:22:00

标签: sql-server

我有一个SQL Server 2005实例,我试图使用SQL查询从SQL Server 2008实例导入数据。我正在使用2008管理工作室和导入/导出数据向导。

如果我在管理工作室中单独运行select查询,它会正确返回所需的~88k行。查询返回具有目标表所需的确切列名称和类型的数据。

当我运行导入向导时,sql查询正确解析,“预览”按钮正确显示数据。转换部分中没有错误或警告。如果转换失败,则任务设置为失败。

运行任务时,不会显示任何错误。但是,它显示“已传输0行”且未导入任何数据。

任何想法为什么?

编辑:尝试导入导入在新的新数据库中创建的表,但结果仍然相同。我想知道从2008年到2005年的运动方向是否重要(即2005年无法正确处理2008年的饲料)。

4 个答案:

答案 0 :(得分:2)

如果你的查询中有“USE [database]”,那么这一行就是在导入/导出过程中执行的所有内容。

解决方案是删除“USE”语句作为查询的一部分。

答案 1 :(得分:1)

我从未在2005/8下运行SQL Server管理工作室的导入功能。

最近,我做了两件事之一。

我只是使用它将数据导入目标服务器上的全新表(甚至不是具有完全相同结构的表),然后运行insert语句以从新创建的表传输到目标。

或者我使用Visual Studio for Database Professional(或Redgate)之类的工具来传输数据。

答案 2 :(得分:1)

我已成功使用导入。虽然使用中间表或文件,但Chris有一个很好的建议(这是我通常遵循的过程)。这使您能够使用查询而不是SQL的转换工具进行一些简单的转换。如果出现问题或需要隔离问题,它还会为您提供缓冲区。

答案 3 :(得分:1)

我在使用2008的导入实用程序时遇到了类似的问题。我们使用Oracle本机SQL在TOAD中运行良好,但使用SQL Server导入实用程序导入0行。罪魁祸首最终与甲骨文的日期格式有关。 SQL引用了诸如'03 -JUN-2013'之类的日期。一旦我将它们更改为使用TO_DATE函数,例如TO_DATE('06 / 03/2013','MM / DD / YYYY'),我们就成功执行并导入了。