【发布时间】:2016-11-21 18:27:15
【问题描述】:
为什么我的临时表会被删除?
目前,我们有:
var listOfSqlCommands = new List<SqlCommand>();
它填充了SqlCommand 和CommandType = CommandType.StoredProcedure;
背景资料:
- 我正在创建一个临时表(这会创建一个
SqlCommand) - 然后获取存储过程列表,并为每个存储过程创建一个
SqlCommand - 我需要为其他命令使用临时表
- 在完成 SQL Server 跟踪后,我没有发现
sp_executesql正在被使用的迹象。分析器显示正在使用exec CreateTempTableSproc创建临时表
完整代码:
var listOfSqlCommands = new List<SqlCommand>();
using (var O0aAConnection = new SqlConnection(connectionString))
{
try
{
O0aAConnection.Open();
foreach (DataTable dt in ds.Tables)
{
EntityName = StringDefaultIfNull(syncConfig.Root.XPathSelectElement("./entity[@name='" + dt.TableName + "']"), "O0aATableName").Substring(3);
var O0aACommand = new SqlCommand();
O0aACommand.CommandType = CommandType.StoredProcedure;
O0aACommand.CommandText = "O0aA42_P_" + EntityName + "Sync_OfferingPublish";
var entityNameParam = new SqlParameter("@EntityName", dt.TableName);
O0aACommand.Parameters.Clear();
O0aACommand.Parameters.Add(entityNameParam);
var tblParam = new SqlParameter("@O42_" + EntityName, SqlDbType.Structured);
tblParam.Value = dt;
O0aACommand.Parameters.Add(tblParam);
O0aACommand.Connection = O0aAConnection;
listOfSqlCommands.Add(O0aACommand);
}
using (var createTempTableCommand = new SqlCommand())
{
createTempTableCommand.CommandText = "CreateTempTableSproc";
createTempTableCommand.CommandType = CommandType.StoredProcedure;
createTempTableCommand.Connection = O0aAConnection;
createTempTableCommand.ExecuteNonQuery();
}
// the commands here are NOT seeing the temp table that was created above!!
foreach (var command in listOfSqlCommands)
{
using (var da = new SqlDataAdapter(command))
{
da.Fill(dtResults);
}
}
}
finally
{
O0aAConnection.Close();
}
}
为什么我的临时表会被删除?
【问题讨论】:
标签: c# sql .net sql-server visual-studio