感谢您提供信息,Mladen,很高兴知道这个提示:)
但是,虽然这有助于我从当前数据库上下文“ContextCurrent”中调用驻留在 master 中的函数,但我真正想要的是能够从源数据库“ContextSource”的上下文中调用标量值函数。
虽然总的来说,我对动态 sql 有所保留,但我最终在这里使用它如下。
DECLARE @sourceDbName nvarchar(128)
SET @sourceDbName = N'sbaportia1'
DECLARE @strQuery nvarchar(max)
DECLARE @parmDefn nvarchar(max)
DECLARE @DbtsCapture varbinary(8)
SET @strQuery =
'
N' ' + N'USE' + N' ' + @sourceDbName + N' '
+ N' ' + N'SELECT @dbtsCapture = min_active_rowversion()'
'
SET @parmDefn =
N'
@dbName varchar(128),
@dbtsCapture varbinary(8) OUTPUT
'
EXEC sp_executesql @strQuery
,@parmDefn
,@dbName = 'autobahn'
,@dbtsCapture = @dbtsCapture OUTPUT
SELECT @dbtsCapture
此外,由于 sp_executesql 在单独的线程中运行,以下脚本中的数据库上下文将在 sp_executesql 退出时与 sp_executesql 进入时自动相同。(我在 2000 年代初期对 sp_executesql 了解得太多了。)