Выполнение кросс-базы данных хранимой процедуры
У меня есть приложение (назовем его App1), чья домашняя база данных - Home1. Мне было поручено создать хранимую процедуру (назовем ее SP1) в базе данных Home2. Используя соединение в приложении с базой данных Home2, я должен выполнить хранимую процедуру, которая выполняет серию простых обновлений для двух таблиц в Home2 через приложение, которое обновит некоторые таблицы в Home2.
Я пытался изменить защиту для хранимой процедуры, чтобы предоставить пользователю Home1 разрешение на выполнение и просмотр определения, но я все еще не могу запустить его.
Я получаю следующую ошибку:
Несоответствие количества параметров: App1 = 4 хранимая процедура = -1 Имя процедуры = SP1
Вот как приложение устанавливает хранимую процедуру (она говорит PL/SQL, но это для базы данных SQL Server.)
Вот строка подключения (см. Идентификатор соединения на первом снимке экрана) из приложения: PROVIDER=SQLNCLI10; ИСТОЧНИК ДАННЫХ =Home2; НАЧАЛЬНЫЙ КАТАЛОГ =Home2; ИНФОРМАЦИЯ О БЕЗОПАСНОСТИ PERSIST =FALSE;
Вот как выглядит код:
CREATE PROCEDURE dbo.SP1
@pStatus varchar(6),
@pProcessQueueId numeric(10,0),
@pInvoiceNo varchar(30),
@pInvoiceSeqNo varchar(3)
BEGIN TRANSACTION
Begin Try
declare @pSyncDate datetime
if @pStatus is null
set @pSyncDate = null
else
set @pSyncDate = getdate()
if @pInvoiceNo is null
Begin
update dbo.TABLE1
set SYNC_DT = @pSyncDate, STATUS_CD = @pStatus
where PROCESS_QUEUE_ID = @pProcessQueueId
update dbo.TABLE2
set SYNC_DT = @pSyncDate, STATUS_CD = @pStatus
where PROCESS_QUEUE_ID = @pProcessQueueId
End
if @pInvoiceNo is not null and @pInvoiceSeqNo is null
Begin
update dbo.TABLE1
set SYNC_DT = @pSyncDate, STATUS_CD = @pStatus
where PROCESS_QUEUE_ID = @pProcessQueueId
and INVOICE_NO = @pInvoiceNo
update dbo.TABLE2
set SYNC_DT = @pSyncDate, STATUS_CD = @pStatus
where PROCESS_QUEUE_ID = @pProcessQueueId
and INVOICE_NO = @pInvoiceNo
End
if @pInvoiceNo is not null and @pInvoiceSeqNo is not null
Begin
update dbo.TABLE1
set SYNC_DT = @pSyncDate, STATUS_CD = @pStatus
where PROCESS_QUEUE_ID = @pProcessQueueId
and INVOICE_NO = @pInvoiceNo
and INVOICE_SEQ = @pInvoiceSeqNo
update dbo.TABLE2
set SYNC_DT = @pSyncDate, STATUS_CD = @pStatus
where PROCESS_QUEUE_ID = @pProcessQueueId
and INVOICE_NO = @pInvoiceNo
and INVOICE_SEQ = @pInvoiceSeqNo
End
COMMIT TRANSACTION
End Try
Возможно ли выполнение кросс-базы данных хранимой процедуры в SQL Server 2008? Я читал здесь, что это невозможно или этот пост ссылается на какой-то другой аспект кросс-базы данных.