Выполнение кросс-базы данных хранимой процедуры

У меня есть приложение (назовем его 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? Я читал здесь, что это невозможно или этот пост ссылается на какой-то другой аспект кросс-базы данных.

0 ответов

Другие вопросы по тегам