Временная таблица не создается в базе данных.Я проверил, что учетные данные имеют доступ для создания временной таблицы.Скопируйте и вставьте команду SQL, и она работает в SSMS.
При отладке не генерируются исключения.Переменная cmd имеет правильное соединение и текст SQL перед выполнением.
Я использовал эту же строку соединения в других частях приложения для успешного запроса к серверу, поэтому проблем там нет.
Моя цель - создать временную таблицу, затем заполнить ее с помощью SqlBulkCopy, затем выполнить обновление слиянием, а затем удалить временную таблицу.
РЕДАКТИРОВАТЬ: Моя ошибка ссылалась на неправильную таблицу в DestinationTableName, но, тем более, что я былпроверка прогресса в SSMS с отдельным соединением, которое не может видеть временную таблицу.Кроме того, оператор finally является излишним.Спасибо всем!
string tmpTable = @"create table #TempTable
(
[Column1] [varchar](50) NOT NULL,
[Column2] [varchar](50) NOT NULL,
[Column3] [varchar](50) NOT NULL
)";
string connString = "Data Source=AzureDBServer;" +
"Initial Catalog=Database;" +
"User id=UserId;" +
"Password=Password;";
using (SqlConnection connection = new SqlConnection(connString))
{
connection.Open();
SqlCommand cmd = new SqlCommand(tmpTable, connection);
cmd.ExecuteNonQuery();
try
{
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "#TempTable";
bulkCopy.WriteToServer(dataTable);
string mergeSql = "<Will eventually have merge statement here>";
cmd.CommandText = mergeSql;
int results = cmd.ExecuteNonQuery();
cmd.CommandText = "DROP TABLE #TempTable";
cmd.ExecuteNonQuery();
}
}
catch (Exception)
{
throw;
}
finally
{
SqlCommand final = new SqlCommand("DROP TABLE #TempTable", connection);
final.ExecuteNonQuery();
}
}