2009-02-11 23 views
0

我用那种有多个模式传播表一个SQL Server数据库(不是我的主意)工作,所以最终的查询这样看:对于模式,使用“SQL”等效的SQL?

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

不,它不。 synonims是唯一的方法。

0

这是行不通的,因为如果你在两个模式中都有Table1,那么你怎么知道你想要的模式?

+0

我希望这可以像命名空间一样工作 - 如果没有碰撞,它就会起作用,如果存在,我会得到一个错误,指示我需要完全限定模式名称。 – 2009-02-11 15:54:46

1

我知道你的感受,如果你需要保持模式(例如,如果你有相同的表名称),你一直在写查询在模式中加入我可以提供的最佳建议是缩短模式名称。

低科技,而不是你想听到的,我确信。

上述建议的同义词只能在对象级别工作(就我所知,您不能拥有整个模式的同义词),因此您必须为每个表,视图,存储过程,函数等设置同义词你想从外部使用默认模式。