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)