我有一个应用程序(简称为App1),其主数据库为 Home1 。我的任务是在数据库 Home2 中创建存储过程(简称为SP1)。使用应用程序中与数据库 Home2 的连接,我应该执行存储过程,该过程通过应用程序对 Home2 中的两个表进行了一系列简单的更新,将更新 Home2 中的某些表。
我尝试修改存储过程的安全性,以授予用户Home1执行和查看定义的权限,但是我仍然无法使其运行。
我收到以下错误:
参数计数不匹配:App1 = 4存储过程= -1过程名称= SP1
这是应用程序设置存储过程的方式(它显示为PL / SQL,但适用于SQL Server数据库。)
这是应用程序中的连接字符串(请参阅第一个屏幕截图上的连接ID): PROVIDER = SQLNCLI10; DATA SOURCE = Home2; INITIAL CATALOG = Home2; PERSIST SECURITY INFO = 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中是否可以跨数据库执行存储过程?我读过here,这是不可能的,或者这篇文章是指跨数据库连接的其他方面。