SqlBulkCopy到SqlServer 2008中的临时表

FDB*_*FDB 5 c# sqlbulkcopy sql-server-2008

我需要将大量数据移动到sql server 2008数据库.我从源服务器获取数据并使用SqlBulkCopy写入目标服务器.必须从存储过程中解析此数据,然后将其删除.我想创建一个临时数据但是,如果我使用SqlCommand在客户端上创建临时数据,SqlBulkCopy可以访问该表并且工作正常,如果我在服务器上使用存储过程执行相同的脚本,则SqlBulkCopy.WriteToServer返回InvalidOperationException"无法访问目标表'#Tax'"

这是完美的代码:

SqlDataReader oSqlDataReader -> read form server source
SqlConnection oSqlConnection = new SqlConnection(_ConnectionTarget)
SqlCommand oSqlCommand = new SqlCommand("Create Table #Tax (Id int)", oSqlConnection);
oSqlCommand.CommandType = CommandType.Text;
oSqlCommand.CommandTimeout = 0;
oSqlCommand.ExecuteNonQuery();
SqlBulkCopy oSqlBulkCopy = new SqlBulkCopy(oSqlConnection)
oSqlBulkCopy.DestinationTableName = "#Tax";
oSqlBulkCopy.WriteToServer(oSqlDataReader);
Run Code Online (Sandbox Code Playgroud)

这是抛出InvalidOperationException异常的代码:

SqlDataReader oSqlDataReader -> read form server a
SqlConnection oSqlConnection = new SqlConnection(_ConnectionTarget)
SqlCommand oSqlCommand = new SqlCommand("SP_CreateTax", oSqlConnection);
oSqlCommand.CommandType = CommandType.StoredProcedure;
oSqlCommand.CommandTimeout = 0;
oSqlCommand.ExecuteNonQuery();
SqlBulkCopy oSqlBulkCopy = new SqlBulkCopy(oSqlConnection)
oSqlBulkCopy.DestinationTableName = "#Tax";
oSqlBulkCopy.WriteToServer(oSqlDataReader);
Run Code Online (Sandbox Code Playgroud)

SP_CreateTax:

Create Procedure SP_CreateTax 
AS
Begin
    Create Table #Tax (Id int)    
End
Run Code Online (Sandbox Code Playgroud)

C-P*_*uru 4

问题是在存储过程中创建的临时表仅在该存储过程的范围内有效。完成后,临时表将被删除。

通过内联 sql 按照您现有的方式(工作方式)创建临时表,然后继续。