【发布时间】:2021-08-16 20:55:26
【问题描述】:
我使用SqlBulkCopy 以非常快速有效的方式填充表格。以前,我用“临时名称”(命名为 Temp_1239128213129873912873)创建了永久表,但它总是困扰着我。尽管显然是事实上的临时表,但它在法律上仍然是永久表,因此在技术上是生产中的模式修改。此外,如果进程崩溃,清理代码不会运行并且这些表会保留;一年后,会累积5-6个。
我决定尝试切换到全局临时表。当我这样做时,我开始遇到这个奇怪的问题,调用WriteToServerAsync 报告找不到表,并出现诸如“无法访问目标表'##temp_123871298371928739182739'”之类的错误
string connStr = "...";
using var sqlConnection = new SqlConnection(connStr); await sqlConnection.OpenAsync();
using var com = new SqlCommand(sqlConnection) { CommandText = "CREATE TABLE ##temp_123871298371928739182739 (...);" }; await com.ExecuteNonQueryAsync();
var sqlBulkCopy = new SqlBulkCopy(connStr) { DestinationTableName = "##temp_123871298371928739182739", };
await sqlBulkCopy.WriteToServerAsync(sourceDataReader); // throws exception
【问题讨论】:
标签: c# .net sql-server azure-sql-database