很抱歉,如果这是一个新手问题。
情况:我有一个链接到主SQL Server的本地SQL Server(原因,我没有权限在主服务器上创建视图/ sps / etc)
我在本地SQL Server上定义了views1
,views2
,views3
,它完全关联主服务器上的表/视图(无本地SQL Server表)
问:view1
和view2
或view3
的加入将如何实现?也就是说,每个视图的结果是否会被拉入本地服务器并在本地加入(即使所有引用的表都在主服务器上)?是否有任何方式保证,或者它完全取决于优化器?
问:如果视图在本地服务器上引用了UDF,那么上面的过程会如何改变?
非常感谢。
答案 0 :(得分:0)
如果查询中涉及的所有表都在同一个远程服务器上(并且该服务器是Microsoft SQL Server),则应远程执行JOIN操作。要查明它是在本地还是远程执行,您可以查看执行计划(它应该只包含“远程查询”,没有连接)或在远程服务器上使用Profiler(如果您有足够的权限)。
如果在本地执行JOIN操作,则可以在使用REMOTE JOIN提示时更改查询计划(尽管只有其中一个表是本地表时此提示才有意义)。获得有效的查询计划取决于更新的统计信息,如果是分布式查询(将本地表连接到远程表),这也意味着拥有足够的权限来读取远程统计信息:“如果链接服务器是一个实例, SQL Server,要获取所有可用的统计信息,用户必须拥有该表或者是sysadmin固定服务器角色,db_owner固定数据库角色或链接服务器上的db_ddladmin固定数据库角色的成员“。