У меня есть процесс, который берет записи из ежедневной ленты в базе данных Access и добавляет записи на сервер SQL.
Иногда происходит сбой загрузки, поэтому я пытаюсь добавить через глобальную временную таблицу SQL-сервера, а затем значительно быстрее удалить / вставить из этой временной таблицы.
У меня есть следующий код, который работает в TSQL:
IF OBJECT_ID ( 'tempdb.dbo.####TempCountry' ) IS NOT NULL DROP TABLE ##TempCountry;
SELECT * INTO ##TempCountry FROM dbo.Country WHERE 1 = 2;
INSERT INTO ##TempCountry (CountryCode, CountryName) VALUES ('AF','AFGHANISTAN')
SELECT * FROM ##TempCountry
И я перевел это на ExecuteStoreCommand
, используя соединение EntityFramework:
using (MyEntities _ent = new MyEntities ()) {
//Create a temp table
try {
_ent.ExecuteStoreCommand("IF OBJECT_ID ( 'tempdb.dbo.##TempCountry' ) IS NOT NULL DROP TABLE ##TempCountry");
_ent.ExecuteStoreCommand("SELECT * INTO ##TempCountry FROM dbo.Country WHERE 1 = 2");
_ent.ExecuteStoreCommand("INSERT INTO ##TempCountry (CountryCode, CountryName, RegionCode) VALUES ('AF','AFGHANISTAN')");
} catch (Exception ex) {
//Generic error
Console.writeline(" Unknown error inserting Country: {0} - {1} ", sCountryCode, ex.Message);
}
} //EF
Когда я нажимаю последний ExecuteStoreCommand
, код выдает SqlException: «Недопустимое имя объекта« ## TempCountry ».»
Но я вижу таблицу, когда я выполняю «Select * from tempdb.dbo.sysobjects»