链接服务器处理时查询模板

时间:2013-05-29 16:43:04

标签: sql-server stored-procedures linked-server openquery

为了让app从单个界面获取来自不同数据源的数据,我创建了一个存储过程,我尝试保留所有数据访问/处理例程。 现状:

  • Sql Server sp接收固定数量的参数,并返回从远程服务器获取的记录集;
  • 基于Sql Sqrver Express双面表示为链接服务器的远程服务器;
  • 某些链接服务器只是连接点导致本地OLE DB文件数据源(其他人在Sql Server本身上有db);
  • 远程数据结构变化很大,并且对于每个链接服务器应保留具有变量处理的特殊查询列表;

查询示例:

select * from OPENQUERY(linkedA,
'select f1 as id,f2 as name
from  openrowset(''VFPOLEDB'',''c:\program\db\Table.FPT'';'''';
'''',''SELECT *  FROM Table  where f1=1'')')

当源是基于Sql Server时:

select * from OPENQUERY(linkedB,
'select f3 as id,f4 as name from [db].[dbo].[Table] where f3=1')

因为我不仅需要处理连接属性(链接服务器名称),还需要处理查询参数(db,scheme)和变量(在本地sp运行时声明和存在),我遇到了一些问题:

  1. 制作默认查询是一团糟 - 参数和变量解析会使代码无法读取;
  2. 由于处理变量,我可能需要转向sp_executesql来简化流程;
  3. 不确定保留查询代码的方式 - 如果它位于config_table xml或smth。
  4. <Config id="1" name="linkedB" db="dblinkedB" scheme="dbo" version="1.0.1">
      <Actions>
        <Action id="0" name="Query 1">select * from OPENQUERY(linkedB,'select f3 as id,f4 as name from [db].[dbo].[Table] where f3=1')')</Action>
      </Actions>
    </Config>
    

    问题: 有没有最好的实践?
    根据这个主题的主题,我正在寻找组织查询模板的最佳方法,只是传递一些参数,可以使用默认或特殊代码。

0 个答案:

没有答案