Aracılığıyla paylaş


bcp_control

Bir toplu kopya bir dosya arasında çeşitli denetim parametrelerini varsayılan ayarlarını değiştirir ve SQL Server.

Sözdizimi

RETCODE bcp_control (
        HDBC hdbc,
        INT eOption,
        void* iValue);

Bağımsız değişkenler

  • hdbc
    Toplu kopyalama etkin odbc bağlantı tanıtıcısı olduğunu.

  • Çağrıbcp_controlbcphınts
    Aşağıdakilerden biri olur:

  • BCPABORT
    Sürmekte olan toplu kopyalama işlemi durdurur. Arama bcp_control ile bir Çağrıbcp_controlbcphınts bcpabort gelen başka bir iş parçacığı bir çalışmasını durdurmak için toplu kopyalama işlemi. İValue parametre yoksayılır.

  • BCPBATCH
    Toplu iş başına satır sayısıdır. Varsayılan veri için kopyalandığı zaman ne zaman veri elde edilir bir tablodaki tüm satırları ya da kullanıcı veri dosyasındaki tüm satırları belirten 0 ' dır bir SQL Server. 1'den küçük bir değer bcpbatch varsayılana sıfırlar.

  • BCPDELAYREADFMT
    Bir Boolean, eğer true olarak neden bcp_readfmtyürütme okumaya. Eğer false (varsayılan), bcp_readfmthemen biçim dosyasını okuyacak. bcpdelayreadfmt doğrudur ve sen ise bir sıra hata oluşacaktır bcp_columnsya bcp_setcolfmt.

    Eğer arama sırası hatası da ortaya bcp_control(hdbc, bcpdelayreadfmt , (void *)FALSE) sonra arama bcp_control(hdbc, bcpdelayreadfmt, (void *)TRUE) ve bcp_writefmt.

    Daha fazla bilgi için, bkz. Meta veri bulma.

  • BCPFILECP
    iValue için veri dosyasındaki kod sayfası numarasını içerir. Öyle aynı derecede 1252 kod sayfası numarasını, 850 ya da bu değerlerden birini belirtebilirsiniz:

    BCPFILE_ACP: istemci Microsoft Windows ® kod sayfası dosya veri var.

    BCPFILE_OEMCP: (varsayılan) istemci oem kod sayfası dosya veri var.

    BCPFILE_RAW: içinde kod sayfası dosya veri olduğunu SQL Server.

  • BCPFILEFMT
    Veri dosyası biçimi sürüm numarası. This can be 80 (SQL Server 2000), 90 (SQL Server 2005), 100 (SQL Server 2008 or SQL Server 2008 R2), or 110 (SQL Server 2012). 110 varsayılandır. Bu verme ve sunucu önceki sürümü tarafından desteklenen biçimler veri alma için yararlıdır. Örneğin, bir metin sütununun elde veri alma için bir SQL Server 2000Server'a bir varchar(max) sütununda bir SQL Server 2005veya daha sonraki sunucu, 80 belirtmelisiniz. Benzer şekilde, verileri verirken 80 belirtirseniz, bir varchar(max) sütunu, o kaydedilecek gibi sadece metin sütunları kaydedilir SQL Server 2000biçimlendirme ve metin sütun alınabilir bir SQL Server 2000sunucu.

  • BCPFIRST
    Veri dosyası veya tabloyu kopyalamak için ilk satırdır. Varsayılan değer 1'dir; 1'den küçük bir değer, varsayılan bu seçeneği sıfırlar.

  • BCPFIRSTEX
    Işlem dışı bcp için veri dosyasına kopyalamak için veritabanı tablosu ilk satırı belirtir.

    Operasyonlarda bcp için veritabanı tablosuna kopyalamak için veri dosyasının ilk satırı belirtir.

    iValueParametre değeri içeren imzalı 64-bit bir tamsayı adresi olması bekleniyor. BCPFIRSTEX için geçirilen değeri 2'dir ^ 63-1.

  • BCPFMTXML
    Oluşturulan biçimi dosyası xml biçiminde olması gerektiğini belirtir. Bu varsayılan olarak kapalıdır.

    xml biçimi dosyaları daha fazla esneklik sağlar, ancak bazı sınırlamalar eklendi. Örneğin, önek ve Sonlandırıcı alanı için aynı anda eski biçimi dosyaları mümkün olduğu belirtebilirsiniz.

    [!NOT]

    xml biçimi dosyaları, yalnızca desteklenen ne zaman SQL Serverile birlikte yüklenen SQL ServerNative Client.

  • AYARLAMAK
    iValue içeren sqltchar karakter dize işaretçisi. Gönderilen dizeyi belirtir ya da SQL Servertoplu işlem ipuçları veya bir Transact-sql deyimini sonuç kümesi döndüren. Birden çok sonuç kümesi döndürür Transact-sql deyimini belirtilmişse ilk dikkate alınmaz sonra tüm sonuç kümeleri. Toplu işleme ipuçları hakkında daha fazla bilgi için bkz: bcp yardımcı programını.

  • BCPKEEPIDENTITY
    Ne zaman iValue doğru ise, toplu kopyalama işlevleri için sağlanan veri değerleri ekleme belirtir SQL Serverbir kimlik kısıtlaması ile tanımlanan sütunları. Giriş dosyası kimlik sütunlarının değerlerini sağlamanız gerekir. Bu ayarlanmazsa, yeni kimlik değerleri eklenen satırlar için oluşturulur. Kimlik sütunları dosyada mevcut verileri yoksayılır.

  • BCPKEEPNULLS
    Dosyasındaki boş veri değerleri null değerlere dönüştürülür olup olmadığını belirtir SQL Servertablosu. Ne zaman iValue doğrudur, boş değerlere dönüştürülür null SQL Servertablosu. Sütun için varsayılan değer dönüştürülmesini boş değerler varsayılır SQL Servervarsa varsayılan tablo.

  • BCPLAST
    Kopyalamak için son satırdır. Tüm satırlara kopyalamak için öntanımlıdır; 1'den küçük bir değer, varsayılan bu seçeneği sıfırlar.

  • BCPLASTEX
    Işlem dışı bcp için veri dosyasına kopyalamak için veritabanı tablosu son satırı belirtir.

    Operasyonlarda bcp için veritabanı tablosuna kopyalamak için veri dosyasının son satırı belirtir.

    iValueParametre değeri içeren imzalı 64-bit bir tamsayı adresi olması bekleniyor. bcplastex için geçirilen değeri 2'dir ^ 63-1.

  • BCPMAXERRS
    Toplu kopyalama işlemi başarısız olmadan önce izin verilen hata sayısıdır. Varsayılan değer 10'dir; 1'den küçük bir değer, varsayılan bu seçeneği sıfırlar. Toplu kopyalama en çok 65.535 hataları dayatır. Bu seçenek için bir değer seçenek olmaktan çok 65.535 sonuçları daha büyük ayarlama girişimi için 65.535 ayarlayın.

  • BCPODBC
    Ne zaman bu true belirtir datetime ve smalldatetime karakter biçiminde kaydedilen değerler, odbc zaman damgası çıkış sırası önek ve sonek kullanacak. bcpodbc seçeneği yalnızca bcp_out için geçerlidir.

    false olduğunda bir datetime 1 Ocak 1997 temsil eden değeri karakter dize dönüştürülür: 1997-01-01 00:00:00.000. Ne zaman true, aynı datetime değeri olarak temsil edilir: {ts ' 1997-01-01 00:00:00.000'}.

  • BCPROWCOUNT
    Geçerli (veya en son) bcp işlem tarafından etkilenen satırların sayısını verir.

  • BCPTEXTFILE
    true ise, veri dosyasındaki ikili dosya yerine bir metin dosyası olduğunu belirtir. Dosya bir metin dosyası ise, bcp, veri dosyasının ilk iki baytı Unicode bayt işaretçisi kontrol ederek Unicode olup olmadığını belirler.

  • BCPUNICODEFILE
    true ise, giriş dosyası Unicode dosyası belirtir.

  • iValue
    Belirtilen değeri Çağrıbcp_controlbcphınts. iValue bir tamsayı (longlong) için 64 bit değerleri gelecekteki genişleme sağlamak için geçersiz bir işaretçi atıldı.

Döner

BAŞARILI veya başarısız.

Açıklamalar

Bu işlev, toplu kopyalama işlemleri, toplu kopyalama, bir veri dosyası ve toplu iş boyutu kopyalamak için ilk ve son satır numaralarını iptal etmeden önce izin verilen hata sayısı dahil olmak üzere çeşitli denetim parametrelerini ayarlar.

Bu işlev ayrıca select deyimi toplu olduğunda kopyalama belirtmek için kullanılan SQL Serverbir sonuç kümesi. Set Çağrıbcp_controlbcphınts için ayarlamak ve set iValue select deyimi içeren bir sqltchar dize işaretçisi için.

Bu denetim parametreleri yalnızca arasında kullanıcı dosyayı kopyalarken anlamlı ve bir SQL Servertablosu. Denetim parametresi ayarlarına sahip kopyalanan satırlar üzerinde etkisi SQL Serverile bcp_sendrow.

Örnek

// Variables like henv not specified.
SQLHDBC      hdbc;
DBINT      nRowsProcessed;
 
// Application initiation, get an ODBC environment handle, allocate the
// hdbc, and so on.
... 

// Enable bulk copy prior to connecting on allocated hdbc.
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (SQLPOINTER) SQL_BCP_ON,
   SQL_IS_INTEGER);

// Connect to the data source, return on error.
if (!SQL_SUCCEEDED(SQLConnect(hdbc, _T("myDSN"), SQL_NTS,
   _T("myUser"), SQL_NTS, _T("myPwd"), SQL_NTS)))
   {
   // Raise error and return.
   return;
   }

// Initialize bulk copy. 
if (bcp_init(hdbc, _T("address"), _T("address.add"), _T("addr.err"),
   DB_IN) == FAIL)
   {
   // Raise error and return.
   return;
   }

// Set the number of rows per batch. 
if (bcp_control(hdbc, BCPBATCH, (void*) 1000) == FAIL)
   {
   // Raise error and return.
   return;
   }

// Set file column count. 
if (bcp_columns(hdbc, 1) == FAIL)
   {
   // Raise error and return.
   return;
   }

// Set the file format. 
if (bcp_colfmt(hdbc, 1, 0, 0, SQL_VARLEN_DATA, '\n', 1, 1)
   == FAIL)
   {
   // Raise error and return.
   return;
   }

// Execute the bulk copy. 
if (bcp_exec(hdbc, &nRowsProcessed) == FAIL)
   {
   // Raise error and return.
   return;
   }

printf_s("%ld rows processed by bulk copy.", nRowsProcessed);

// Variables like henv not specified.
SQLHDBC      hdbc;
DBINT      nRowsProcessed;
 
// Application initiation, get an ODBC environment handle, allocate the
// hdbc, and so on.
... 

// Enable bulk copy prior to connecting on allocated hdbc.
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (SQLPOINTER) SQL_BCP_ON,
   SQL_IS_INTEGER);

// Connect to the data source, return on error.
if (!SQL_SUCCEEDED(SQLConnect(hdbc, _T("myDSN"), SQL_NTS,
   _T("myUser"), SQL_NTS, _T("myPwd"), SQL_NTS)))
   {
   // Raise error and return.
   return;
   }

// Initialize bulk copy. 
if (bcp_init(hdbc, _T("address"), _T("address.add"), _T("addr.err"),
   DB_IN) == FAIL)
   {
   // Raise error and return.
   return;
   }

// Set the number of rows per batch. 
if (bcp_control(hdbc, BCPBATCH, (void*) 1000) == FAIL)
   {
   // Raise error and return.
   return;
   }

// Set file column count. 
if (bcp_columns(hdbc, 1) == FAIL)
   {
   // Raise error and return.
   return;
   }

// Set the file format. 
if (bcp_colfmt(hdbc, 1, 0, 0, SQL_VARLEN_DATA, '\n', 1, 1)
   == FAIL)
   {
   // Raise error and return.
   return;
   }

// Execute the bulk copy. 
if (bcp_exec(hdbc, &nRowsProcessed) == FAIL)
   {
   // Raise error and return.
   return;
   }

printf_s("%ld rows processed by bulk copy.", nRowsProcessed);

Ayrıca bkz.

Başvuru

Toplu kopyalama işlevleri