爲什麼我的臨時表會丟失?存儲過程不會看到在同一連接中創建的臨時表
目前,我們有:
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();
}
}
爲什麼我的臨時表掉下來?
我如何保持會話的一樣嗎? –
如果您不在SP中執行此操作,則會話是相同的。 – Hogan
使用executenonquery來運行create table語句。 – Hogan