2015-05-07 2 views
4

Я пытаюсь использовать bulkCopy.WriteToServer() для копирования данных из моего удаленного SQL Server Express в локальный SQL Server Express, но данные не записываются в мою локальную базу данных SQL Server Express.bulkCopy.WriteToServer не копирует

Код перепрыгивает через метод WriteToServer() мгновенно ... Я понятия не имею, если он терпит неудачу на внутренней стороне и не отображается сообщение об ошибке, хотя

Я прочитал How to duplicate a SQL Server 2000 table programatically using .NET 2.0? и я использую очень похожий код. Хотя я использую SQL Server 2008 Express, на удаленный и локальный для SQL Server 2014 Экспресс:

using (SqlConnection remoteConnection = new SqlConnection(remoteConnectionString)) 
{ 
    var query = "SELECT * FROM information_schema.tables WHERE table_type = 'base table'"; 
    SqlCommand commandGetTables = new SqlCommand(query, remoteConnection); 

    try 
    { 
     remoteConnection.Open(); 
     SqlDataReader results = commandGetTables.ExecuteReader(); 

     while (results.Read()) 
     { 
      tables.Add(results.GetString(2)); 
     } 

     results.Close(); 
    } 
    catch (Exception ex) 
    { 
     //stuff 
    } 
    finally 
    { 
     remoteConnection.Close(); 
    } 

    remoteConnection.Open(); 

    foreach (var table in tables) 
    {      
     // Get data from the source table as a SqlDataReader. 
     var commandSourceData = new SqlCommand("SELECT * FROM " + table + ";", remoteConnection); 
     var reader = commandSourceData.ExecuteReader(); 

     using (SqlConnection destinationConnection = new SqlConnection(destinationConnectionString)) 
     { 
      destinationConnection.Open(); 

      using (var bulkCopy = new SqlBulkCopy(destinationConnection)) 
      { 
       bulkCopy.DestinationTableName = table; 

       try 
       { 
        // Write from the source to the destination. 
        bulkCopy.WriteToServer(reader); 
       } 
       catch (Exception ex) 
       { 
        //stuff 
       } 
       finally 
       { 
        //stuff removed for this post 
       } 
      } 
     } 
    } 

    remoteConnection.Close(); 
} 
return true; 

Я знаю, что это может быть предметом SQL инъекции и т.д., но это приложение используется только мной, а не вопрос здесь ,

Что я делаю неправильно?

Редактировать

Я проверил значение читателя (var reader = commandSourceData.ExecuteReader();) и имеет записи, как я бы ожидать, что означает, что он читает с пульта дистанционного управления нормально.

+1

Какое сообщение об ошибке вы получаете? Код, если это настоящий проверенный код, выдает сообщения об ошибках. – MatthewMartin

+0

Нет сообщений об ошибках. У меня есть точки останова во всех моих операциях catch, которые записывают журналы. @MatthewMartin – MyDaftQuestions

+1

Вы не указали отображение –

ответ

1
bulkCopy.DestinationTableName = table; 
bulkCopy.WriteToServer(reader); 

этих линий неправильно это должно выглядеть следующим образом ..

bulkCopy.DestinationTableName = "dbo." + DataTable.TableName; 
bulkCopy.WriteToServer(DataTable); 
Смежные вопросы