Выполнение кросс-базы данных хранимой процедуры - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть приложение (назовем его App1), чья домашняя база данных Home1 .Мне было поручено создать хранимую процедуру (назовем ее SP1) в базе данных Home2 .Используя соединение в приложении с базой данных Home2 , я должен выполнить хранимую процедуру, которая выполняет серию простых обновлений для двух таблиц в Home2 через приложение, которое будет обновлятьнекоторые таблицы в Home2 .

Я пытался изменить защиту для хранимой процедуры, чтобы предоставить пользователю Home1 разрешение на выполнение и просмотр определения, но я до сих пор не могу его получитьзапустить.

Я получаю следующую ошибку:

Несоответствие счетчика параметров: App1 = 4 Хранимая процедура = -1 Имя процедуры = SP1

Вот какприложение настраивает хранимую процедуру (это говорит PL / SQL, но это для базы данных SQL Server.) enter image description here

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...