我正在使用sql server 2008 rc2,我对标量值函数的命名约定有疑问。具体来说,以下代码工作正常
select from database.dbo.MyUDF('arg')
但是当我摆脱dbo并尝试:
select from database..MyUDF('arg')
我收到语法错误,说这是不明确的。我从不在对象的名称中使用dbo表,视图,存储过程或表值函数,我从来没有遇到过这个问题。
为什么我会为标量udf遇到这个问题?
答案 0 :(得分:0)
首先:
如果您不使用dbo表示法,则表示您正在使用sysadmin权限。否则你最终会以[domain \ user] .Mytable结束,例如在CREATE上。 不良做法。在运行时,它会在查看dbo =较慢的性能之前尝试解析用户的架构。
第二
尝试使用SYNONYMS
CREATE SYNONYM MyUDF FOR dbo.MyUDF
注意,同义词可能需要显式权限(但听起来好像你正在使用sa或dbo)并且我没有将它们与数据库前缀一起使用所以YMMV