問題:
データベースでSqlCommand()を使用してSqlコマンドを実行した後、別のデータベースにデータを挿入すると、後続のすべてのステートメントでExceptionInvalidオブジェクト名がエラーになります。
質問:
なぜこうなった?
追加情報:
選択部分のテーブルの前にTempデータベース名を追加することで修正する方法を知っていますが、SQL Management Studioでステートメントを個別に実行する場合ではなく、そのデータベースのコンテキストで実行されているため、必要ありません。
プログラムロジック:
- 一時データベースを作成して入力します(すべてのテーブル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(CompanyID、BranchID、Module、BatchNbr、CreditTotal、DebitTotal、ControlTotal、CuryCreditTotal、CuryDebitTotal、CuryControlTotal、CuryInfoID、LedgerID、BatchType、Status、AutoReverse、AutoReverseCopy、OrigModule、OrigBatchNbr、DateEntered、Releaに挿入LineCntr、CuryID、ScheduleID、NoteID、CreatedByID、CreatedByScreenID、CreatedDateTime、LastModifiedByID、LastModifiedByScreenID、LastModifiedDateTime、Hold、Description、Scheduled、Voided、FinPeriodID、TranPeriodID)select 2、1、Module、BatchNbr、CreditTotal 、CuryControlTotal、i.CuryInfoID、isnull((select a.LedgerID from @ AcuDB..ledger a where 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]、' 00000000'[LastModifiedBy GETDATE()[LastModifiedDateTime]、Hold、Description、Scheduled、Voided、b.FinPeriodID、TranPeriodID from Temp..ASI_GLBatch b inner join @ AcuDB..CurrencyInfo i on i.CuryEffDate = b.DateEntered cross join @ AcuDB..glsetup gここで、b.companyID=@CpnyCDおよびb.branchID=@BranchCDTemp..ASI_GLBatchからのTranPeriodIDb内部結合@AcuDB..CurrencyInfoi on i.CuryEffDate = b.DateEntered cross join @ AcuDB..glsetup gここで、b.companyID=@CpnyCDおよびb.branchID=@BranchCDTemp..ASI_GLBatchからのTranPeriodIDb内部結合@AcuDB..CurrencyInfoi on i.CuryEffDate = b.DateEntered cross join @ AcuDB..glsetup gここで、b.companyID=@CpnyCDおよびb.branchID=@BranchCD