在不同的数据库中执行内置函数,如 object_definition('asdf')

Chr*_*uez 2 sql-server

我想使用内置函数,但目标对象位于不同的数据库中。

例子

------------------------------------
USE TestDB_1
GO
SELECT OBJECT_DEFINITION('SOME OBJECT')
UNION
SELECT TestDB_2.SYS.OBJECT_DEFINITION('SOME OBJECT')
------------------------------------
Run Code Online (Sandbox Code Playgroud)

我知道我可以引用 sys.sql_modules 来获取对象定义,我一般要求任何内置的 sql 函数,如 db_name() 等。

Als*_*sin 5

你不能在 SELECT 中引用其他数据库的系统函数,但你可以像这样运行 select

use TestDB_1
exec TestDB_2..sp_executesql N'SELECT OBJECT_DEFINITION(OBJECT_ID(''SOME OBJECT''))'
Run Code Online (Sandbox Code Playgroud)