数据库AAA中的过程的调用者: -
use AAA
exec BBB.dbo.ap_MyProc
在数据库BBB中调用的过程: -
use BBB
create procedure ap_MyProc as
print 'We want a way to return the database name AAA'
任何建议都将受到赞赏。
答案 0 :(得分:0)
您的存储过程可以编辑吗?如果是,我认为您可以编辑存储过程并为数据库名称添加一个参数。
在调用存储过程期间,您应该将db_name()
传递给新参数,以便您的存储过程可以知道哪个数据库正在调用它
DECLARE @ServerName varchar(50) = db_name()
EXEC [dbo].[SP] @newParams = @ServerName
答案 1 :(得分:0)
我现在可以回答我自己的问题了。我们可以利用syslockinfo ...
declare @db_name varchar(255)
select
@db_name = db_name(rsc_dbid)
from
master.dbo.syslockinfo
where
req_spid = @@SPID
and req_ownertype = 4 --"exSession"
and rsc_dbid <> db_id()
select @db_name = isnull(@db_name, db_name())
print @db_name
也适用于SQL 2008。 :)