1
我想弄清楚为什么我的存储过程不适用于从另一个数据库的列中选择。服务器主体Xuser无法在当前安全上下文中访问数据库Ydb。 SQL服务器2008
数据库Kdb和Ydb具有相同的数据库所有者。使用该数据库所有者帐户创建的两个数据库中的存储过程和表。
在Ydb中有一个存储过程试图访问Kdb中的一个表,由最小权限用户执行(只有在Ydb上执行和连接,没有Kdb权限)。
Use [Ydb]
GO
ALTER PROCEDURE [dbo].[CreateSecureTableAEntry]
@fid int
AS
BEGIN
DECLARE @operatorId uniqueidentifier
DECLARE @orgName nvarchar(max)
SELECT @orgName = SUBSTRING(SYSTEM_USER,1,LEN(SYSTEM_USER)-4)
SELECT @operatorId = Id FROM Kdb.dbo.Organizations WHERE Kdb.dbo.Organizations.Name = @orgName
INSERT INTO TableA (operatorId, sourceFid) VALUES (@operatorId, @fid);
END
我在Kdb和Ydb上启用了交叉数据库链接。我让YDB值得信赖。
这显然是一个权限问题,但在保持权限尽可能紧的情况下还应该做些什么?