2012-03-21 2 views
0

Когда я использую данные BCP в базе данных, триггер не запускается. Что делать, чтобы сделать триггер полезным? Могу ли я просто обновлять данные без изменения значений?BCP игнорировать триггер, что я могу сделать?

 try 
     { 
      //get all data 
      string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;"; 
      OleDbConnection conn = new OleDbConnection(strConn); 
      conn.Open(); 
      string strExcel = ""; 
      strExcel = string.Format("select * from [{0}$] where xh<>''", sheetName); 
      OleDbDataAdapter oda = new OleDbDataAdapter(strExcel, strConn); 
      oda.Fill(ds, sheetName); 

      //BCP data 
      using (SqlBulkCopy bcp = new SqlBulkCopy(connectionString)) 
      { 
       bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied); 
       bcp.BatchSize = 100;//the speed of import 
       bcp.NotifyAfter = 100; 
       bcp.DestinationTableName = sheetName;//target table 
       bcp.WriteToServer(ds.Tables[0]); 
      } 
     } 
    catch (Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.Message); 
     } 

Пуск следующий.

создать триггер СеЬАде
на имя_таблицах
для вставки, обновления
в
, если обновление (день рождения)
обновления имя_таблицы набор возраст = DateDiff (год, день рождения, GETDATE())
пойти

+0

Кроме того, следует отметить, что DATEDIFF (год, день рождения, GETDATE()) является ужасно ненадежным способом возвращения возраста. Особенно в Новый год, когда почти каждый будет иметь неправильный возраст, рассчитанный – hasski

ответ

0

Проверьте это изделие MSDN: http://msdn.microsoft.com/en-us/library/ms187640.aspx

Использование bcp, триггеры по умолчанию отключены. Чтобы включить его, используйте следующий аргумент:

-h "FIRE_TRIGGERS" 

При работе с SqlBulkCopy класса предоставляемых .NET, использовать SqlBulkCopyOptions перечисление для включения триггера.

(Время, затраченного найти это решение: 2мин)

+0

Я нашел это решение, но я этого не понял. Не могли бы вы объяснить это более конкретно? Благодарю. – BryanM

+0

Проверьте обновленный ответ. – CodeZombie

Смежные вопросы