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值得信賴。
這顯然是一個權限問題,但在保持權限盡可能緊的情況下還應該做些什麼?