第一次, 最开始使用 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 linkserversql 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+个字段拆分多次查询,
或横向拆表 使用游标 (不太清楚如何将 游标与链接查询 结合)
主要原因为字段太多太长, 导致很多方法失效
请教 这种情况使用什么方案完成查询转存, 或者有语法能实现我没发现
该回答引用GPTᴼᴾᴱᴺᴬᴵ
针对你提出的需求,可以尝试以下方案:
具体的实现方式可以根据具体的业务需求和技术水平进行选择。