简单来说是 如何通过链接服务器, 执行动态sql, 并得到返回结果, 将结果转存
整体需求为 通过链接服务器 将动态SQL查询结果 转存入本地.
链接服务器中的 表为大宽表, 需要将500+个字段存入本地, 直接select语句长度为16k个字符长度
由于是大宽表,字段非常非常的长, 导致生成的sql语句过长 无法使用部分方法
第一次, 最开始使用 OPENQUERY(linkserver,"sqlstr") 的方式
sql select * from OPENQUERY(INSQL,"select xxx,xxx...*[500+] fromxxx")
问题为OPENQUERY最多支持8000个字符第二次, 使用 exec()at linkserver 的方式
sql exec("sqlstr")at linkserver
问题为 只能搜索查看无法转存第三次, 使用 exec executesql "sqlstr" 的方式
sql exec executesql "sqlstr",N'参数1 output...',返回参数1 output
问题为 SQL貌似没有数组或列表 导致定义的变量, 返回的为最后一次查询结果
考虑过使用表变量,但在executesql 的输入N''中修改会有语法错误.第四次, 使用insert into table exec()at linkserver
sql insert into table exec("sqlstr")at linkserver
问题为报错 The OLE DB provider "INSQL" for linked server "insql" does not contain the table "runtime.ddbo.WideHistory". The table either does not exist or the current user does not have permissions on that table.
同时并不确定exec()at linkserver 是否有语法错误,是否能够执行
尝试许久和找遍搜索引擎后放弃了.
办法是有的比如 纵向拆表 将500+个字段拆分多次查询,
或横向拆表 使用游标 (不太清楚如何将 游标与链接查询 结合)
主要原因为字段太多太长, 导致很多方法失效
请教 这种情况使用什么方案完成查询转存, 或者有语法能实现我没发现