簡體   English   中英

從SQL DMO遷移到SQL SMO(SQL Server 2012)

[英]Migrating from SQL DMO to SQL SMO (SQL Server 2012)

我正在將SQL DMO邏輯遷移到SQL SMO邏輯,但不確定如何為某些屬性實現相同的功能。 這是DMO:

    oBCP = New SQLDMO.BulkCopy2
    With oBCP
        .ImportRowsPerBatch = ImportRowsPerBatch                 
        .DataFilePath = Path.Combine(gtSysTempDir, "file.dat")     
        .LogFilePath = Path.Combine(gtSysTempDir, "file.log")      
        .ErrorFilePath = Path.Combine(gtSysTempDir, "file.err")     
        .MaximumErrorsBeforeAbort = 1                   
        .DataFileType = SQLDMO.SQLDMO_DATAFILE_TYPE.SQLDMODataFile_TabDelimitedChar
    End With

到目前為止,這是SMO:

    trans = New Transfer
    With trans
        .ImportRowsPerBatch = ImportRowsPerBatch                 
        .TargetDatabaseFilePath = Path.Combine(gtSysTempDir, "file.dat")     
        .TargetLogFilePath = Path.Combine(gtSysTempDir, "file.log")       
        '.ErrorFilePath = Path.Combine(gtSysTempDir, "file.err")     
        .MaximumErrorsBeforeAbort = 1                   
        .DataFileType = SQLDMO.SQLDMO_DATAFILE_TYPE.SQLDMODataFile_TabDelimitedChar
    End With

ImportRowsPerBatch(BatchSize?),ErrorFilePath,MaxErrorsBeforeAbort和DataFileType的等效項(如果存在)是什么? 謝謝。

盡管MSDN說了什么 ,但是Transfer實際上並不等同於BulkCopy2 它用於腳本化/復制整個數據庫,而BulkCopy2僅用於批量復制數據。 這些設置根本不對應-特別是, Transfer.TargetDatabaseFilePath應該是數據庫文件的位置,而BulkCopy2.DataFilePath是導入/導出數據所在的文件的位置。 某些大容量復制方案由Transfer處理,但大多數情況並非如此。

如果您實際上並沒有復制整個數據庫,則有幾種選擇,其中一種都不使用SMO(沒有這樣的類來進行批量復制):

  • 直接調用BULK INSERT語句,這可能是BulkCopy2在后台執行的操作(但我尚未對此進行驗證);
  • 使用SqlBulkCopy類,這將需要一些額外的代碼(但由於要導入的數據可以來自任何來源,因此它還提供了更大的靈活性);
  • 構建命令行並調用bcp

其中, BULK INSERT是最簡單的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM