我正在使用一个SQL Server数据库,它有多个模式分布的表(不是我的想法),所以查询最终看起来像这样:
select col1, col2
from some_ridiculously_long_schema_name.table1 t1
inner join
another_really_long_schema_location.table2 t2
on...
......你明白了。
当我将查询放入存储过程等时,这是一个小小的不便,但当我正在进行特殊查询时,这真的很痛苦。
有没有什么方法可以“包含”我所介入的所有模式,让它们自动寻址? (LINQPad这样做)。
我希望能够表明这样的事情:
using some_ridiculously_long_schema_name, another_really_long_schema_location
...然后使用我的地址空间中包含的模式进行查询。
如果不存在这样的情况,我会查看同义词,但我更愿意这样做,而不必将工件添加到数据库中。
答案 0 :(得分:1)
Red-Gate销售一种SQL工具,可将智能感知添加到服务器管理工作室。从未尝试过,但它可能有助于减少击键次数:http://www.red-gate.com/products/SQL_Prompt/index.htm
答案 1 :(得分:1)
我知道您的感受,如果您需要保留模式(例如,如果您在每个模式中都有相同的表名)并且您一直在编写跨模式连接的查询,我可以提供的最佳建议是缩短您的模式模式名称。
低技术而不是你想听到的我肯定。
上面建议的同义词仅适用于对象级别(据我所知,你不能拥有整个架构的同义词)所以你必须拥有每个表,视图,存储过程,函数等的同义词想要在默认架构之外使用。
答案 2 :(得分:0)
不,不。 synonims是唯一的方法。
答案 3 :(得分:0)
那不行,因为如果你在两个模式中都有Table1那么你怎么知道你想要什么模式?