我在DB1中有标量值函数;
功能:Udf_NumberToInfo(Number)
返回:所需号码的信息
我在DB1中有表格;
第1栏:数字
第2栏:信息
我在DB2中有数字,并希望在DB2中查询它们并将它们分组。让我用示例查询来解释;
USE DB2
select DB1..dbo.Udf_NumberToInfo(Number) as INFO,COUNT(*) as count from NumberTable (nolock)
where Numbers like '5%'
group by DB1..dbo.Udf_NumberToInfo(Number)
查询返回:
Remote function reference 'DB1..dbo.Udf_NumberToInfo' is not allowed, and the column name 'DB1' could not be found or is ambiguous.
如何在DB1中使用远程标量值函数?
感谢。
答案 0 :(得分:1)
它应该工作,因为你使用db1..dbo它应该是db1.dbo 我在我的本地机器上测试过它。 看看这个
USE DB2
select DB1.dbo.Udf_NumberToInfo(Number) as INFO,COUNT(*) as count from
NumberTable (nolock)
where Numbers like '5%'
group by DB1.dbo.Udf_NumberToInfo(Number)
答案 1 :(得分:0)
SQL Server中的双点表示法意味着:使用当前用户默认架构(或默认数据库)。
使用DBName..myFunction
表示:myFunction
数据库中用户的默认架构中的DBName
功能。默认情况下,默认架构是dbo,但可以更改。
让我们假设userA具有cust
架构作为其默认架构,而userB默认具有dbo
架构。在这种情况下,当userA执行DBName..myFunction
函数时,它将指向DBName.cust.myFunction
,但当userB执行它时,它将指向DBName.dbo.myFunction
在您的情况下,DB1..dbo.Udf_NumberToInfo
表示:在用户的默认数据库和名为dbo的模式中,在名为DB1的链接服务器上使用Udf_NuberToInfo函数。
假设DB1和DB2托管在同一台服务器上,您应该使用DB1.dbo.Udf_NumberToInfo
。
有关标识符的详细信息,请阅读MSDN上的以下文章:https://technet.microsoft.com/en-us/library/ms187879(v=sql.105).aspx