Я работаю с SQL Server 2012 Express.
Я использую Service Broker для асинхронного запуска хранимой процедуры.
Процедура активации должна получить доступ к другой базе данных для выполнения другой хранимой процедуры. Это код:
CREATE PROCEDURE [dbo].[GetNewCodes]
@gintNewCodes bigint,
@presNewCodes tinyint,
@levelNewCodes bigint,
@quantityNewCodes smallint
AS
-- Get new codes from INCIC database.
DECLARE @return_value int,
@xmlGenerated xml,
@xmlString NVARCHAR(MAX)
SET NOCOUNT ON;
-- Set that this stored procedure is running
update dbo.RunningSPs with (serializable) set conf_value = 1
where sp_name = N'GetNewCodes'
if @@rowcount = 0
begin
insert dbo.RunningSPs(sp_name, conf_value) values (N'GetNewCodes', 1)
end
EXEC @return_value = [INCIC].[dbo].[ReadCodeBuffer]
@gint = @gintNewCodes,
@pres = @presNewCodes,
@level = @levelNewCodes,
@quantity = @quantityNewCodes,
@xmlGenerated = @xmlGenerated OUTPUT
SET @xmlString = cast(@xmlGenerated as nvarchar(max))
-- Process these new codes on TRZ.
EXEC dbo.ProcessCodes @XmlString = @xmlString
-- Update that we are not running this procedure any more.
update dbo.RunningSPs with (serializable) set conf_value = 0
where sp_name = N'GetNewCodes'
if @@rowcount = 0
begin
insert dbo.RunningSPs(sp_name, conf_value) values (N'GetNewCodes', 0)
end
Проблема здесь: [INCIC].[dbo].[ReadCodeBuffer]
, и сообщение об ошибке:
Ошибка: 50000
Неисправимая ошибка в процедуре GetNewCodes: 916: Субъект сервера "sa" не может получить доступ к базе данных "INCIC" в текущем контексте безопасности.
Я следовал этому учебнику для реализации службы, очереди и хранимой процедуры активации. .
Как я могу решить эту проблему?