我需要將大量數據移動到sql server 2008數據庫。我從源服務器獲取數據並使用SqlBulkCopy寫入目標服務器。這些數據必須從存儲過程中解析出來然後刪除。我想創建一個臨時數據,但是,如果我使用SqlCommand在客戶端上創建臨時數據,SqlBulkCopy可以訪問該表並且工作正常,如果我使用存儲過程在服務器上執行相同的腳本,SqlBulkCopy.WriteToServer返回該InvalidOperationException異常 「無法訪問目標表 '#Tax'」SqlBulkCopy到SqlServer 2008中的臨時表
這是代碼工作完美:
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);
這是拋出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);
SP_CreateTax:
Create Procedure SP_CreateTax
AS
Begin
Create Table #Tax (Id int)
End
嗨感謝您的回答,使用CommandType.StoredProcedure您必須設置SP的名稱,並且ExecuteNonQuery()也沒有例外,因此sp已執行。此外,爲了確認我已從#Tax重命名爲SP中的表名,並在服務器上創建了表。 – FDB
@FDB嗯..我明白了。請確保您用於連接的SQL Server用戶具有足夠的權限。 –