У меня есть приложение (назовем его App1), чья домашняя база данных Home1 .Мне было поручено создать хранимую процедуру (назовем ее SP1) в базе данных Home2 .Используя соединение в приложении с базой данных Home2 , я должен выполнить хранимую процедуру, которая выполняет серию простых обновлений для двух таблиц в Home2 через приложение, которое будет обновлятьнекоторые таблицы в Home2 .
Я пытался изменить защиту для хранимой процедуры, чтобы предоставить пользователю Home1 разрешение на выполнение и просмотр определения, но я до сих пор не могу его получитьзапустить.
Я получаю следующую ошибку:
Несоответствие счетчика параметров: App1 = 4 Хранимая процедура = -1 Имя процедуры = SP1
Вот какприложение настраивает хранимую процедуру (это говорит PL / SQL, но это для базы данных SQL Server.)
Вот строка подключения (см. ID соединения на первом снимке экрана) из приложения: PROVIDER = SQLNCLI10; ИСТОЧНИК ДАННЫХ = Home2; НАЧАЛЬНЫЙ КАТАЛОГ = Home2; ИНФОРМАЦИЯ О БЕЗОПАСНОСТИ ПЕРСИСТА = ЛОЖЬ;
Вот чтокод выглядит следующим образом:
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 выполнение хранимых процедур между базами данных?Я прочитал здесь , что это невозможно, или это сообщение ссылается на какой-то другой аспект кросс-базы данных.