テンポラリテーブルがドロップされるのはなぜですか?同じ接続で作成されたテンポラリテーブルがストアドプロシージャに表示されない
現在、我々は持っている:
var listOfSqlCommands = new List<SqlCommand>();
それはSqlCommand
CommandType = CommandType.StoredProcedure;
と背景情報が取り込まれます:
- 私は (これは
- 次に、ストアドプロシージャのリストを取得し、を作成します各1
- 他のコマンドのテンポラリテーブルを使用する必要があります
sp_executesql
が使用されていることがわかりました。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(); } }
なぜ私の一時表がドロップされますん:プロファイラは、一時テーブルが
exec CreateTempTableSproc
SqlCommand
を作成する)一時テーブルを作成しています
完全なコードを使用して作成されていたことが示されましたか?
は、どのように私は、同じセッションを維持していますか? –
SPでセッションを実行しない場合、セッションは同じです。 – Hogan
executenonqueryを使用してcreate table文を実行します。 – Hogan