问题:
在将数据插入另一个数据库的数据库上使用 SqlCommand() 运行 Sql 命令后,以下所有语句都会出错,并带有 ExceptionInvalid 对象名称。
问题:
为什么会这样?
附加信息:
我知道如何通过在选择部分的表之前添加临时数据库名称来修复它,但是由于它是在该数据库的上下文中运行的,所以这不是必需的,而且当我在 SQL 管理工作室中单独运行语句时也不是
程序逻辑:
- 创建并填充临时数据库(所有表 ASI_...)
- 在临时数据库的上下文中选择数据,然后将其插入另一个数据库(@AcuDB)
- 对 X 查询重复步骤 2
插入代码:
if (TempD.State == System.Data.ConnectionState.Closed) TempD.Open();
Command = new SqlCommand(temp, TempD);
Command.CommandTimeout = 0;
Command.ExecuteNonQuery();
在之前的类似语句之后运行的示例 Sql 出现错误:
插入@AcuDB ..Batch (公司ID,分支机构ID,模块,BatchNbr,CreditTotal,DebitTotal,ControlTotal,CuryCreditTotal,CuryDebitTotal,CuryControlTotal,CuryInfoID,LedgerID,BatchType,状态,AutoReverse,AutoReverseCopy,OrigModule,OrigBatchNbr,DateEntered,Released,Posted, LineCntr,CuryID,ScheduleID,NoteID,CreatedByID,CreatedByScreenID,CreatedDateTime,LastModifiedByID,LastModifiedByScreenID,LastModifiedDateTime,Hold,Description,Scheduled,Voided,FinPeriodID,TranPeriodID) 选择 2, 1,Module,BatchNbr,CreditTotal,DebitTotal,ControlTotal,CuryCreditTo ,CuryControlTotal,i.CuryInfoID, isnull((从@AcuDB..ledger中选择a.LedgerID a.LedgerCD = b.LedgerID),0) [LedgerID],BatchType,Status,AutoReverse,AutoReverseCopy,OrigModule,OrigBatchNbr, DateEntered [DateEntered],Released,Posted,LineCntr,b.CuryID,ScheduleID,NoteID, 'B5344897-037E-4D58-B5C3-1BDFD0F47BF9' [CreatedByID],'00000000' [CreatedByScreenID],GETDATE() [CreatedDateTime],'B5344897-037E-4D58-B5C3-1BDFD0F47BF9' [LastModifiedByID],LastModifiedByID],'00000' GETDATE() [LastModifiedDateTime],Hold,Description,Scheduled,Voided,b.FinPeriodID,TranPeriodID from Temp..ASI_GLBatch b 内部连接 @AcuDB..CurrencyInfo i on i.CuryEffDate = b.DateEntered 交叉连接 @AcuDB..glsetup g其中 b.companyID = @CpnyCD 和 b.branchID = @BranchCDTranPeriodID 来自 Temp..ASI_GLBatch b 内部连接 @AcuDB..CurrencyInfo i on i.CuryEffDate = b.DateEntered 交叉连接 @AcuDB..glsetup g 其中 b.companyID = @CpnyCD 和 b.branchID = @BranchCDTranPeriodID 来自 Temp..ASI_GLBatch b 内部连接 @AcuDB..CurrencyInfo i on i.CuryEffDate = b.DateEntered 交叉连接 @AcuDB..glsetup g 其中 b.companyID = @CpnyCD 和 b.branchID = @BranchCD