在SQL Server Data Tools 2015中,我想将数据从SQL Server 2012数据库移动到新的访问数据库(2005)中,并且需要在该过程中创建访问表。可以在一个控制流下执行Execute SQL进程中全部完成此操作。这将是循环浏览需要动态创建并加载到空访问数据库的表列表的一部分。
我已经创建了一个连接管理器,它位于Access数据库的连接字段中,并将代码放入Execute SQL Task
组件的常规标签下的SQL语句字段中。
这两个数据库都在我的本地计算机上。
"SELECT a.* into providers from OPENROWSET('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;', 'SELECT * FROM newResults.dbo.providers') as a"
我收到以下错误:
SSIS包“ C:\ Users \ chris \ source \ repos \ Integration Services Project5 \ Integration Services Project5 \ Package1.dtsx”启动。错误: 执行SQL任务2,执行SQL任务:执行以下命令时的0xC002F210 查询“ SELECT a。*到OPENQUERYSET('SQLN ...”到提供程序中 出现以下错误:“ FROM子句中的语法错误。”。可能 失败原因:查询问题,“ ResultSet”属性未设置 正确,参数设置不正确或连接未建立 正确地。任务失败:执行SQL任务2 SSIS包 “ C:\ Users \ chris \ source \ repos \ Integration Services Project5 \ Integration 服务Project5 \ Package1.dtsx”已完成:成功。
答案 0 :(得分:0)
“执行SQL任务”中包含的SQL在目标的上下文中执行。 SELECT INTO FROM OPENQUERYSET语句被传递给Access。 Access没有OPENQUERYSET函数,即使它具有OPENQUERYSET函数,您的来源也就是SQL Server,除非您已在Access中建立与SQL Server的连接,否则Access是不知道的。将您的SQL语句复制到Access中并尝试执行它,您将看到相同或相似的错误。这就是“执行SQL任务”正在做的事情。
动态数据是SSIS中更具挑战性的问题之一。 COZYROC工具为处理动态方案提供了很多支持。观看有关他们的Data Flow Task Plus的视频,以获取一些想法。