Share via


bcp Yardımcı Programı

bcp yardımcı programı Microsoft SQL Server öğelerinin örneği arasındaki verileri ve kullanıcı tarafından belirtilen biçimdeki veri dosyasını toplu olarak kopyalar.bcp yardımcı programı çok sayıda yeni satırı SQL Server tablosuna almak veya tablo dışındaki verileri veri dosyalarına vermek için kullanılabilir.Yardımcı program, queryout seçeneğiyle kullanılmasının dışında Transact-SQL bilgisi gerektirmez.Verileri tabloya almak üzere bu tablo için oluşturulmuş bir biçim dosyası kullanmanız veya tablo yapısını ve sütunları için geçerli olan veri türlerini anlamanız gerekir.

Konu bağlantısı simgesibcp sözdizimine ilişkin olarak kullanılan sözdizimi kuralı için bkz.: Transact-SQL Sözdizimi Kuralları (Transact-SQL).

Not

bcp öğesini verilerinizi yedeklemek için kullanıyorsanız, veri biçimini kaydetmek için biçim dosyası oluşturun.bcp veri dosyaları şema veya biçim bilgileri içermez. Bu nedenle bir tablo veya görüntü bırakılırsa ve bir biçim dosyasına sahip değilseniz verileri alamayabilirsiniz.

Sözdizimi

bcp {[[database_name.][schema].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-m max_errors] [-f format_file] [-x] [-e err_file]
    [-F first_row] [-L last_row] [-b batch_size]
    [-d database_name] [-n] [-c] [-N] [-w] [-V (70 | 80 | 90 )] 
    [-q] [-C { ACP | OEM | RAW | code_page } ] [-t field_term] 
    [-r row_term] [-i input_file] [-o output_file] [-a packet_size]
    [-S [server_name[\instance_name]]] [-U login_id] [-P password]
    [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

Bağımsız değişkenler

  • database_name
    Belirtilen tablo veya görünümün bulunduğu veritabanının adıdır.Tablo veya görünüm belirtilmemişse bu, kullanıcı için varsayılan veritabanıdır.

    Ayrıca veritabanı adını -d ile açıkça belirtebilirsiniz.

  • owner
    Tablo veya görünümün sahibinin adıdır.İşlemi gerçekleştiren kullanıcı belirtilen tablo veya görünüme sahipse, owneristeğe bağlıdır.ownerbelirtilmediyse ve işlemi gerçekleştiren kullanıcı belirtilen tablo veya görünüme sahip değilse, SQL Server hata iletisi döndürür ve işlem iptal edilir.

  • table_name
    SQL Server (in) öğesine veri alırken hedef tablonun SQL Server (out) öğesinden veri verirken kaynak tablonun adıdır.

  • view_name
    SQL Server (in) öğesine veri kopyalanırken hedef görünümün SQL Server (out) öğesinden veri kopyalanırken kaynak görünümün adıdır.Yalnızca tüm sütunların aynı tabloya başvurduğu görünümler hedef görünümler olarak kullanılabilir.Verileri görünümlere kopyalamaya ilişkin kısıtlamalar hakkında daha fazla bilgi için bkz.: INSERT (Transact-SQL).

  • "query"
    Sonuç kümesi döndüren Transact-SQL sorgusudur.Sorgu COMPUTE yan tümcesini belirten SELECT deyimi gibi çoklu sonuç kümeleri döndürürse, yalnızca ilk sonuç kümesi veri dosyasına kopyalanır. Sonraki sonuç kümeleri yoksayılır.Sorgunun başına ve sonuna çift tırnak işareti ve sorguya katıştırılmış diğer öğelerin başına ve sonuna tek tırnak işareti ekleyin.Ayrıca veriler sorgudan toplu olarak kopyalandığında queryout belirtilmelidir.

    Saklı yordam içinde başvurulan tüm tablolar bcp deyimi yürütülmeden önce mevcut olduğu takdirde, sorgu saklı yordama başvurabilir.Örneğin, saklı yordam geçici bir tablo oluşturursa, geçici tablo yalnızca çalışma zamanında kullanılabilir olduğundan ve deyim yürütme zamanında kullanılamayacağından bcp deyimi başarısız olur.Bu durumda, saklı yordamın sonuçlarını bir tabloya eklemeyi ve ardından tablodaki verileri bir veri dosyasına kopyalamak için bcp kullanmayı düşünün.

  • in | out| queryout | format
    Toplu kopyalama işleminin yönünü şu şekilde belirtir:

    • in bir dosyadan veritabanı tablosuna veya görünümüne kopyalar.

    • out bir veritabanı tablosundan veya görünümünden dosyaya kopyalar.Varolan bir dosyayı belirtirseniz, dosyanın üzerine yazılır.Veri ayıklarken bcp yardımcı programının boş bir dizeyi null ve null bir dizeyi boş dize olarak gösterdiğini aklınızda bulundurun.

    • queryout bir sorgudan kopyalar ve yalnızca veriler sorgudan toplu olarak kopyalandığında belirtilmelidir.

    • format belirtilen seçeneğe bağlı olarak biçim dosyası (-n, -c, -w veya -N) ve tablo ya da görünüm sınırlayıcısı oluşturur.Veriler toplu olarak kopyalandığında bcp komutu biçim dosyasına başvurabilir. Böylece biçim bilgilerini etkileşimli olarak yeniden girmenize gerek kalmaz.format seçeneği -f seçeneğini gerektirir. XML biçim dosyasını oluştururken ise -x seçeneğini şart koşar.Daha fazla bilgi için, bkz. Bir biçim dosyası oluşturuluyor.

  • data_file
    Veri dosyasının tam yoludur.Veriler SQL Server öğesine toplu olarak alındığında, veri dosyası belirtilen tablo veya görünüme kopyalanacak verileri içerir.Veriler SQL Server öğesinden toplu olarak verilirken, veri dosyası tablo veya görünümden kopyalanan verileri içerir.Yol, 1 ile 255 karakter arasında olabilir.Veri dosyası en fazla 263 - 1 satır içerebilir.

    Önemli notÖnemli

    format seçeneği için nul öğesini data_file (formatnul) değeri olarak belirtmeniz gerekir.

  • -mmax_errors
    bcp işlemi iptal olmadan önce oluşabilecek maksimum sözdizimi hatası sayısını belirtir.Sözdizimi hatası hedef veri türüne ilişkin veri dönüştürme hatası anlamına gelir.max_errors toplamı kısıtlama ihlali gibi yalnızca sunucuda belirlenebilecek hataları hariç tutar.

    bcp yardımcı programı tarafından kopyalanamayan satır yoksayılır ve bir hata olarak hesaplanır.Bu seçenek dahil edilmezse, varsayılan 10 olur.

    Not

    -m seçeneği money veya bigint veri türlerini dönüştürmek için geçerli değildir.

  • -fformat_file
    Biçim dosyasının tam yolunu belirtir.Seçeneğin anlamı aşağıda belirtildiği üzere kullanıldığı ortama bağlıdır:

    • -f, format seçeneği ile kullanılıyorsa, belirtilen tablo veya görünüm için belirtilen format_file oluşturulur.XML biçim dosyası oluşturmak için -x seçeneğini belirtin.Daha fazla bilgi için, bkz. Bir biçim dosyası oluşturuluyor.

    • in veya out seçeneği ile kullanılıyorsa, -f varolan biçim dosyasını gerektirir.

      Not

      Biçim dosyasınıin veya out seçeneği ile kullanmak isteğe bağlıdır.-f seçeneği olmadığında -n, -c, -w veya -N belirtilmemişse, komut biçim bilgilerini ister ve yanıtlarınızı biçim dosyasına (varsayılan dosya adı: Bcp.fmt) kaydetmenize izin verir.

    format_file tire (-) veya eğik çizgiyle (/) başlıyorsa, -f ve format_file adları arasına boşluk eklemeyin.

  • -x
    format ve -fformat_file seçenekleriyle kullanıldığında, varsayılan XML olmayan biçim dosyası yerine XML tabanlı bir biçim dosyası oluşturur.Veri alırken veya verirken -x çalışmaz.format ve -fformat_file öğeleri olmadan kullanılırsa hata oluşturur.

    Not

    -x anahtarını kullanmak için bcp 10.0 istemcisi kullanıyor olmanız gerekir.bcp 10.0 istemcisinin nasıl kullanıldığı hakkında bilgi almak için bu konuda daha sonraki bölümlerde geçen "Açıklamalar"a bakın.

  • -eerr_file
    bcp yardımcı programının dosyadan veritabanına aktaramadığı satırları saklamak için kullanılan bir hata dosyası tam yolu belirtir.bcp komutunun hata iletileri kullanıcının iş istasyonuna gider.Bu seçenek kullanılmazsa, bir hata dosyası oluşturulmaz.

    err_file tire (-) veya eğik çizgiyle (/) başlıyorsa, -e ve err_file adları arasına boşluk eklemeyin.

  • -Ffirst_row
    Bir tablodan verilen veya bir veri dosyasından alınan ilk satır sayısını belirtir.Bu parametre, (>) 0'dan büyük ancak toplam satır sayısından (<) küçük veya bu sayıya (=) eşit bir değer gerektirir.Bu parametre olmadığında varsayılan, dosyanın ilk satırıdır.

    first_row 2^63-1 değerine kadar bir tamsayı olabilir.-Ffirst_row, 1 tabanlıdır.

  • -Llast_row
    Bir tablodan verilen veya bir veri dosyasından alınan son satır sayısını belirtir.Bu parametre, (>) 0'dan büyük ancak son satır sayısından (<) küçük veya bu sayıya (=) eşit bir değer gerektirir.Bu parametre olmadığında varsayılan, dosyanın son satırıdır.

    last_row 2^63-1 değerine kadar bir tamsayı olabilir.

  • -bbatch_size
    Alınan verilerin toplu iş başına satır sayısını belirtir.Her bir toplu iş alınır ve işlem tamamlanmadan önce toplu işin tamamını alan ayrı bir işlem olarak günlüğe kaydedilir.Varsayılan olarak, veri dosyasındaki tüm satırlar tek bir toplu iş olarak alınır.Satırları çoklu toplu işler arasında dağıtmak için veri dosyasındaki satır sayısından daha küçük bir batch_size belirtin.Herhangi bir toplu işe ilişkin işlem başarısız olursa, yalnızca geçerli toplu işten yapılan eklemeler geri alınır.Tamamlanan işlemler tarafından zaten alınan toplu işler daha sonraki hatalardan etkilenmez.

    Bu seçeneği **-h"**ROWS_PER_BATCH =bb" seçeneği ile birlikte kullanmayın.

    Daha fazla bilgi için, bkz. İçin toplu almayı toplu işlemleri yönetme.

  • -ddatabase_name
    Bağlanılacak veritabanını belirtir.bcp.exe, varsayılan olarak kullanıcının varsayılan veritabanına bağlanır.

    -ddatabase_name üç bölüm adıyla birlikte belirtilirse hata oluşur (database_name.schema.table, bcp.exe öğesine ilk parametre olarak geçirilir).Bunun nedeni, veritabanı adını iki kez belirtememenizdir.

    database_name tire (-) veya eğik çizgi (/) ile başlıyorsa, -d ve veritabanı adı arasına boşluk eklemeyin.

  • -n
    Verinin yerel (veritabanı) veri türlerini kullanarak toplu kopyalama işlemi gerçekleştirir.Bu seçenek her alanı istemez, yerel değerleri kullanır.

    Daha fazla bilgi için, bkz. Yerel biçim aldığınızda veya veri vermek için kullanarak.

  • -c
    Karakter veri türünü kullanarak işlemi gerçekleştirir.Bu seçenek her alanı istemez, char öğesini depolama türü olarak, önekler olmadan ve \t (sekme karakteri) ile alan ayırıcısı olarak ve \r\n (yeni satır karakteri) öğesini satır sonlandırıcı olarak kullanır.

    Daha fazla bilgi için, bkz. Veri alınır veya için karakter biçimi kullanma.

  • -N
    Karakter olmayan verilere ilişkin verilerin yerel (veritabanı) veri türlerini ve karakter verilerinin Unicode karakterlerini kullanarak toplu kopyalama işlemi gerçekleştirir.Bu seçenek -w seçeneğine alternatif olarak daha yüksek performans sunar ve veri dosyası kullanarak SQL Server örneğinden başka örneğe veri aktarmaya yöneliktir.Her alanı istemez.ANSI genişletilmiş karakterlerini içeren verileri aktarırken ve yerel mod performansından yararlanmak istediğinizde bu seçeneği kullanın.

    Daha fazla bilgi için, bkz. Unicode yerel biçim aldığınızda veya veri vermek için kullanma.

    SQL Server 2005 SP1'de başlayarak, -N ile bcp.exe kullanıp bir tablo şemasına veri verip daha sonra aynı tablo şemasından veri alırsanız, sabit bir uzunluk ve Unicode olmayan bir karakter sütunu bulunduğu takdirde kesilme uyarısı görebilirsiniz (örneğin, char(10)).

    Uyarı yoksayılabilir.Bu uyarıyı çözmenin bir yolu -N yerine -n kullanmaktır.

  • -w
    Unicode karakterlerini kullanarak toplu kopyalama işlemi gerçekleştirir.Bu seçenek her alanı istemez, nchar öğesini depolama türü olarak, önekler ve \t (sekme karakteri) olmadan alan ayırıcısı olarak ve \n (yeni satır karakteri) öğesini satır sonlandırıcı olarak kullanır.

    Daha fazla bilgi için, bkz. Unicode karakter biçimi kullanarak aldığınızda veya veri verme.

  • -V (70 | 80 | 90 )
    Daha eski SQL Server sürümünün veri türlerini kullanarak toplu kopyalama işlemi gerçekleştirir.Bu seçenek her alanı istemez, varsayılan değerleri kullanır.

    70 = SQL Server 7.0

    80 = SQL Server 2000

    90 = SQL Server 2005

    Örneğin, SQL Server 7.0 tarafından desteklenmeyen ancak SQL Server'ın sonraki sürümlerinde tanıtılmış türlere ilişkin veri oluşturmak için (örneğin, bigint, sql_variant ve xml) -V70 seçeneğini kullanın.

    Daha fazla bilgi için, bkz. sql Server'ın önceki sürümlerden yerel ve karakter biçimi veri alma.

  • -q
    bcp yardımcı programı ve SQL Server öğesinin bir örneği arasındaki bağlantıda SET QUOTED_IDENTIFIERS ON deyimini yürütür.Boşluk veya tek tırnak işareti içeren bir veritabanı, sahip, tablo veya görünüm adı belirtmek için bu seçeneği kullanın.Üç bölümlü tablonun tümünü veya görünüm adını tırnak işareti ("") içine alın.

    Boşluk veya tek tırnak işareti içeren bir veritabanı adı belirtmek için –q seçeneğini kullanmanız gerekir.

    -q, -d öğesine geçirilen değerler için geçerli değildir.

    Daha fazla bilgi için bu konuda daha sonraki bölümlerde geçen Açıklamalar'a bakın.

  • -C { ACP | OEM | RAW | code_page }
    Veri dosyasındaki verinin kod sayfasını belirtir.code_page öğesi, verinin 127'den fazla veya 32'den az karakter değerine sahip char, varchar veya text sütunlarını içermesi şartıyla uygundur.

    Not

    Her sütun için biçim dosyasında harmanlama adı belirtmenizi öneririz.

    Kod sayfası değeri

    Açıklama

    ACP

    ANSI/Microsoft Windows (ISO 1252).

    OEM

    İstemci tarafından kullanılan varsayılan kod sayfasıBu, -C belirtilmezse varsayılan kod sayfasıdır.

    RAW

    Bir kod sayfasından diğerine dönüştürme gerçekleşmez.Dönüştürme gerçekleşmediğinden bu en hızlı seçenektir.

    code_page

    Belirli kod sayfası numarası; örneğin, 850.

    Önemli notÖnemli
    SQL Server 65001 numaralı kod sayfasını desteklemez (UTF-8 kodlaması).

    Daha fazla bilgi için, bkz. Farklı harmanlamalar arasında veri kopyalama.

  • -tfield_term
    Alan sonlandırıcısını belirtir.Varsayılan: \t (sekme karakteri).Varsayılan alan sonlandırıcısını geçersiz kılmak için bu parametreyi kullanın.Daha fazla bilgi için, bkz. Alan ve satır sonlandırıcılar belirtme.

    bcp.exe komutunda onaltılık gösterimdeki alan sonlandırıcısını belirtirseniz, değer 0x00 konumunda kesilir.Örneğin, 0x410041 olarak belirtirseniz 0x41 kullanılacaktır.

    field_term tire (-) veya eğik çizgiyle (/) başlıyorsa, -t ve field_term değeri arasına boşluk eklemeyin.

  • -rrow_term
    Satır sonlandırıcısını belirtir.Varsayılan: \n (yeni satır karakteri).Varsayılan satır sonlandırıcısını geçersiz kılmak için bu parametreyi kullanın.Daha fazla bilgi için, bkz. Alan ve satır sonlandırıcılar belirtme.

    bcp.exe komutunda onaltılık gösterimdeki satır sonlandırıcısını belirtirseniz, değer 0x00 konumunda kesilir.Örneğin, 0x410041 olarak belirtirseniz 0x41 kullanılacaktır.

    row_term tire (-) veya eğik çizgiyle (/) başlıyorsa, -r ve row_term değeri arasına boşluk eklemeyin.

  • -iinput_file
    Toplu kopyalama işlemi etkileşimli mod kullanılarak gerçekleştirildiğinde her veri alanı için komut istemi sorularına ilişkin yanıtları içeren yanıt dosyası adını belirtin (-n, -c, -w ve -N belirtilmez).

    input_file tire (-) veya eğik çizgiyle (/) başlıyorsa, -i ve input_file adları arasına boşluk eklemeyin.

  • -ooutput_file
    Komut isteminden yeniden yönlendirilmiş çıkışı alan dosya adını belirtir.

    output_file tire (-) veya eğik çizgiyle (/) başlıyorsa, -o ve output_file adları arasına boşluk eklemeyin.

  • -apacket_size
    Sunucuya gönderilen ve sunucudan gönderilen ağ paketi başına bayt sayısını belirtir.Sunucu yapılandırma seçeneği SQL Server Management Studio kullanılarak ayarlanabilir (veya sp_configure sistem saklı yordamı).Ancak, sunucu yapılandırma seçeneği bu seçenek kullanılarak tek tek geçersiz kılınabilir.packet_size 4096 bayt ile 65535 bayt arasında olabilir; varsayılan: 4096.

    Artırılan paket boyutu toplu kopyalama işlemlerinin performansını artırabilir.Daha büyük bir paket talep edilirse ancak alınamazsa, varsayılan kullanılır.bcp yardımcı programı tarafından oluşturulan performans istatistikleri kullanılan paket boyutunu gösterir.

  • -Sserver_name[ **\instance_name]
    Bağlanacağı SQL Server örneğini belirtir.Sunucu belirtilmezse, bcp yardımcı programı yerel bilgisayardaki varsayılan SQL Server örneğine bağlanır.Bu seçenek, bcp komutu ağdaki veya yerel adlandırılmış örnekteki uzak bilgisayardan çalıştırıldığında gerekir.Bir sunucudaki varsayılan SQL Server örneğine bağlanmak için yalnızca server_name öğesini belirtin.SQL Server adlandırılmış örneğine bağlanmak için server_name
    \**instance_name öğesini belirtin.

  • -Ulogin_id
    SQL Server öğesine bağlanmak için kullanılan oturum açma kimliğini belirtir.

    Güvenlik notuGüvenlik Notu

    bcp yardımcı programı tümleşik güvenlik kullanan güvenilir bir bağlantı ile SQL Server öğesine bağlandığında, user name ve password birleşimi yerine -T seçeneğini (güvenilir bağlantı) kullanın.

  • -Ppassword
    Oturum açma kimliği için parola belirtir.Bu seçenek kullanılmıyorsa, bcp komutu parola ister.Bu seçenek parola olmadan komut isteminin sonunda kullanılıyorsa, bcp varsayılan parolayı (NULL) kullanır.

    Güvenlik notuGüvenlik Notu

    Boş parola kullanmayın. Güçlü bir parola kullanın.

    Parolanızı maskelemek için -U seçeneği ile birlikte -P seçeneğini belirtmeyin.Bunun yerine -U seçeneği ile birlikte bcp öğesini ve diğer anahtarları belirttikten sonra (-P öğesini belirtmeyin), ENTER tuşuna basın. Komut sizden parola ister.Bu yöntem parolanızın girildikten sonra maskelenmesini sağlar.

    password tire (-) veya eğik çizgiyle (/) başlıyorsa, -P ve password öğeleri arasına boşluk eklemeyin.

  • -T
    bcp yardımcı programının SQL Server öğesine tümleşik güvenliği kullanarak güvenilir bir bağlantıyla bağlanmasını sağlar.Ağ kullanıcısının güvenlik kimlik bilgileri, login_id ve password gerekmez.–T belirtilmemişse, başarıyla oturum açmak için –U ve –P öğelerini belirtmeniz gerekir.

  • -v
    bcp yardımcı program sürüm numarasını ve telif hakkını bildirir.

  • -R
    Para birimi, tarih ve saatin istemci bilgisayarın yerel ayarı için tanımlanmış bölgesel biçimi kullanan SQL Server öğesine toplu olarak kopyalandığını belirtir.Varsayılan olarak, bölgesel ayarlar yoksayılır.

  • -k
    Boş sütunların eklenen sütunlar için varsayılan değerlere sahip olmak yerine işlem sırasında null değer tutması gerektiğini belirtir.Daha fazla bilgi için, bkz. Boş değerlere tutma veya toplu almayı sırasında varsayılan değerleri kullanma.

  • -E
    Alınan veri dosyasındaki kimlik değeri ve değerlerinin kimlik sütunu için kullanılacağını belirtir.-E sağlanmışsa, alınan veri dosyasındaki bu sütuna ilişkin kimlik değerleri yoksayılır ve SQL Server tablo oluşumu sırasında belirtilen çekirdek ve artış değerlerine bağlı olacak şekilde otomatik olarak benzersiz değerler atar.

    Veri dosyası tablo veya görünümdeki kimlik sütununa ilişkin değerleri içermiyorsa, tablo veya görünümdeki kimlik sütununun veri alınırken atlanması gerektiğini belirtmek için biçim dosyası kullanın. SQL Server sütun için otomatik olarak benzersiz değerler atar.Daha fazla bilgi için, bkz. dbcc CHECKIDENT (Transact-sql).

    -E seçeneği özel bir izin gereksinimine sahiptir.Daha fazla bilgi için bu konuda daha sonraki bölümlerde geçen "Açıklamalar"a bakın.

    Kimlik değerlerini tutma hakkında daha fazla bilgi için bkz.: Kimlik değerleri toplu olduğunda veri alma tutma.

  • **-h"**hint[ ,... n] "
    Verinin tablo veya görünüme toplu olarak alınması işlemi sırasında kullanılacak ipucu veya ipuçlarını belirtir.

    • ORDER**(column[ASC | DESC] [,...n])**
      Veri dosyasındaki verinin sıralama düzeni.Toplu alma performansı, alınan veri tablodaki kümelenmiş dizine (varsa) göre sıralanırsa geliştirilir.Veri dosyası farklı bir düzende sıralanmışsa, bu, kümelenmiş dizin anahtarının düzeni dışında bir düzendir veya tabloda kümelenmiş bir dizin yoksa, ORDER yan tümcesi yoksayılır.Sağlanan sütun adları hedef tablodaki geçerli sütun adları olmalıdır.Varsayılan olarak, bcp veri dosyasının sırasız olduğunu kabul eder.Ayrıca en iyi duruma getirilmiş toplu alma işlemi için SQL Server alınan verilerin sıralanmış olduğunu doğrular.

      Daha fazla bilgi için, bkz. Toplu olduğunda veri alma, sıralama düzenini denetleme.

    • ROWS_PER_BATCH =bb
      Toplu iş başına veri satırı sayısı (bb olarak).
      -b
      belirtildiğinde kullanılır. Veri dosyasının tümünün tek işlem olarak sunucuya gönderilmesini sağlar.Sunucu bb değerine göre toplu yüklemeyi en iyi duruma getirir.Varsayılan olarak, ROWS_PER_BATCH bilinmez.

      Daha fazla bilgi için, bkz. İçin toplu almayı toplu işlemleri yönetme.

    • KILOBYTES_PER_BATCH = cc
      Toplu iş başına ortalama kilobayt sayısı (cc olarak).Varsayılan olarak, KILOBYTES_PER_BATCH bilinmiyor.

      Daha fazla bilgi için, bkz. İçin toplu almayı toplu işlemleri yönetme.

    • TABLOCK
      Toplu yükleme işlemi için toplu güncellemeye ilişkin tablo düzeyinde bir kilidin elde edildiğini belirtir. Aksi halde satır düzeyinde kilit elde edilir.Toplu kopyalama süresi boyunca kilit tutma işlemi tablodaki kilit çakışmasını azaltacağından bu ipucu performansı büyük ölçüde artırır.Tabloda dizin yoksa ve TABLOCK belirtilmişse, tablo birden fazla istemci tarafından aynı anda yüklenebilir.Varsayılan olarak, kilitleme davranışı table lock on bulk load tablo seçeneği tarafından belirlenir.

      Daha fazla bilgi için, bkz. İçin toplu almayı kilitleme davranışı denetleme.

    • CHECK_CONSTRAINTS
      Hedef tablo veya görünümdeki tüm kısıtlamaların toplu alma işlemi sırasında denetlenmesi gerektiğini belirtir.CHECK_CONSTRAINTS ipucu olmadan, CHECK ve FOREIGN KEY kısıtlamaları yoksayılır ve işlemin ardından tablodaki kısıtlama güvenilir değil olarak işaretlenir.

      Not

      UNIQUE, PRIMARY KEY ve NOT NULL kısıtlamaları her zaman zorlanır.

      Belirli durumlarda kısıtlamaları tablonun tamamında denetlemeniz gerekir.Toplu alma işleminden önce tablo boş değilse, kısıtlamayı yeniden doğrulama maliyeti CHECK kısıtlamalarını artımlı verilere uygulamanın maliyeti geçebilir.Bu nedenle, kısıtlamaların artımlı toplu alma işlemi sırasında denetlenmesini sağlamanızı öneririz.

      Kısıtlamaların devre dışı bırakılmasını isteyebileceğiniz bir durum (varsayılan davranış) giriş verilerinin kısıtlamaları ihlal eden satırları kısıtlamasıdır.CHECK kısıtlamaları devre dışı bırakıldığında verileri alabilir ve ardından geçerli olmayan verileri kaldırmak için Transact-SQL deyimlerini kullanabilirsiniz.

      Not

      bcp veri doğrulamasını ve komut dosyalarının veri dosyasındaki geçersiz veriler üzerinden yürütülmeleri halinde başarısız olmalarına neden olabilecek veri denetlemelerini zorlar.

      Not

      -m max_errors anahtarı kısıtlama denetlemesi için geçerli değildir.

      Daha fazla bilgi için, bkz. Toplu alma işlemler tarafından denetleme kısıtlaması denetleme.

    • FIRE_TRIGGERS
      Hedef tabloda tanımlanan ekleme tetikleyicileri in bağımsız değişkeni ile belirtilerek toplu kopyalama işlemi sırasında çalıştırılır.FIRE_TRIGGERS belirtilmemişse, ekleme tetikleyicileri çalışmaz.FIRE_TRIGGERS out, queryout ve format bağımsız değişkeni için yoksayılır.

      Daha fazla bilgi için, bkz. Tetikleyici yürütme toplu olduğunda veri alma denetleme.

Açıklamalar

Microsoft SQL Server 2008 R2 araçlarını yüklediğinizde bcp 10.0 istemcisi yüklenir.Araçlar PATH ortam değişkeninin değerine bağlı olarak hem SQL Server 2008 R2 hem de SQL Server 2005 için yüklenmişse, bcp 10.0 istemcisi yerine daha eski bir bcp istemcisi kullanıyor olabilirsiniz.Bu ortam değişkeni yürütülebilir dosyaları aramak için Windows tarafından kullanılan bir dizin kümesi tanımlar.Hangi sürümü kullandığınızı öğrenmek için Windows Komut İstemi'ndeki bcp /v komutunu çalıştırın.PATH ortam değişkeninde komut yolunu nasıl ayarlayacağınız hakkında bilgi için Windows Yardım'a gözatın.

XML biçim dosyaları yalnızca SQL Server araçları SQL Server Native Client ile birlikte yüklendiğinde desteklenir.

bcp yardımcı programını nerede bulacağınız ve nasıl çalıştıracağınız ve komut istemi yardımcı programları sözdizim kuralları hakkında bilgi için bkz.: Komut istemi yardımcı programları.

Toplu alma ve verme işlemlerine ilişkin verileri hazırlama hakkında bilgi için bkz.: Veri toplu verme veya alma için hazırlanıyor..

Toplu alma ile gerçekleştirilen satır ekleme işlemlerinin işlem günlüklerine ne zaman kaydedildiğine ilişkin bilgi için bkz.: Toplu alma Minimal günlüğü için Önkoşullar.

Yerel Veri Dosyası Desteği

SQL Server 2008 R2 içinde, bcp yardımcı programı yalnızca SQL Server 2000, SQL Server 2005, SQL Server 2008 ve SQL Server 2008 R2 ile uyumlu yerel veri dosyalarını destekler.

Hesaplanan Sütunlar ve zaman damgası Sütunları

Hesaplanan sütunlar veya timestamp sütunları için alınan veri dosyasındaki değerler yoksayılır ve SQL Server, değerleri otomatik olarak atar.Veri dosyası tablodaki hesaplanan sütunlar veya timestamp sütunlarına ilişkin değerleri içermiyorsa, SQL Server sütun için otomatik olarak değer atadığında veriler alınırken tablodaki hesaplanan sütunların veya timestamp sütunlarının atlanması gerektiğini belirtmek için biçim dosyası kullanın.

Hesaplanan sütunlar ve timestamp sütunları SQL Server öğesinden veri dosyasına her zamanki gibi toplu olarak kopyalanır.

Boşluk ve Tırnak İşareti İçeren Tanımlayıcıları Belirtme

SQL Server tanımlayıcıları katıştırılmış boşluklar ve tırnak işaretleri gibi karakterler içerebilir.Böyle tanımlayıcılar aşağıdaki gibi değerlendirilmelidir:

  • Komut isteminde boşluk veya tırnak işareti içeren bir tanımlayıcı veya dosya adı belirttiğinizde, tanımlayıcıyı tırnak ("") içine alın.

    Örneğin, şu bcp out komutu Currency Types.dat adlı veri dosyasını oluşturur:

    bcp AdventureWorks2008R2.Sales.Currency out "Currency Types.dat" -T -c
    
  • Boşluk veya tırnak işareti içeren bir veritabanı adı belirtmek için -q seçeneğini kullanmanız gerekir.

  • Katıştırılmış boşluk veya tırnak işareti içeren sahip, tablo veya görünüm adları için şunlardan birini yapabilirsiniz:

    • -q seçeneğini belirtin veya

    • Tırnak içindeki sahip, tablo veya görünüm adını köşeli ayraç ([]) içine alın.

Veri Doğrulama

bcp veri doğrulamasını ve komut dosyalarının veri dosyasındaki geçersiz veriler üzerinden yürütülmeleri halinde başarısız olmalarına neden olabilecek veri denetlemelerini zorlar.Örneğin, bcp şunu doğrular:

  • float veya real veri türlerinin yerel gösterimi geçerlidir.

  • Unicode verileri çift bayt uzunluğundadır.

Eski SQL Server sürümlerinde toplu olarak alınabilen geçerli veri şekillerinin yükleme işlemi artık başarısız olabilirken daha eski sürümlerde istemci geçersiz veriye erişmeye çalışana dek hata oluşmazdı.Toplu yüklemeden sonra veriler sorgulandığında eklenen doğrulama sürprizleri en aza indirir.

SQLXML Belgelerini Toplu Verme veya Alma

SQLXML verilerini toplu olarak vermek veya almak için biçim dosyanızdaki şu veri türlerinden birini kullanın.

Veri türü

Etki

SQLCHAR veya SQLVARYCHAR

Veri, istemci kod sayfasına veya harmanlama ile kapsanan kod sayfasına gönderilir).Etki, biçim dosyası belirtmeden -c anahtarını belirtmekle aynıdır.

SQLNCHAR veya SQLNVARCHAR

Veri Unicode olarak gönderilir.Etki, biçim dosyası belirtmeden -w anahtarını belirtmekle aynıdır.

SQLBINARY veya SQLVARYBIN

Veri herhangi bir dönüştürme olmadan gönderilir.

İzinler

bcpout işlemi kaynak tabloda SELECT izni gerektirir.

bcp in işlemi en az hedef tablodaki SELECT/INSERT izinlerini gerektirir.Buna ek olarak aşağıdakilerden biri doğruysa ALTER TABLE iznine gerek duyulur:

  • Kısıtlamalar mevcuttur ve CHECK_CONSTRAINTS ipucu belirtilmez.

    Not

    Kısıtlamaları devre dışı bırakma varsayılan davranıştır.Kısıtlamaları açıkça etkinleştirmek için -h seçeneğini CHECK_CONSTRAINTS ipucu ile kullanın.

  • Tetikleyiciler mevcuttur ve FIRE_TRIGGER ipucu belirtilmez.

    Not

    Varsayılan olarak, tetikleyiciler harekete geçirilmez.Tetikleyicileri harekete geçirmek için -h seçeneğini FIRE_TRIGGERS ipucu ile kullanın.

  • Bir veri dosyasındaki kimlik değerlerini almak için -E seçeneğini kullanırsınız.

Not

Hedef tabloda ALTER TABLE iznine gerek duyulması SQL Server 2005 öğesinde yenidir.Kullanıcı hesabında hedef tablo için ALTER tablo izinleri yoksa bu yeni gereksinim bcp başarısız olacak tetikleyicileri ve kısıtlama denetimlerini zorlamayan komut dosyalarına neden olur.

Karakter Modu (-c) ve Yerel Mod (-n) için En İyi Yöntemler

Bu bölümde karakter moduna (-c) ve yerel moda (-n) ilişkin öneriler bulunmaktadır.

  • (Yönetici/Kullanıcı) Mümkün olduğunda ayırıcı sorununu önlemek için yerel biçimi (-n) kullanın.SQL Server öğesini kullanarak vermek ve almak için yerel biçim kullanın.Veriler SQL Server dışındaki bir veritabanına alınacaksa, SQL Server öğesinden -c veya -w seçeneklerini kullanarak veri verin.

  • (Yönetici) Verileri BCP OUT kullanarak doğrulayın.Örneğin, BCP OUT, BCP IN ve ardından BCP OUT kullandığınızda, verilerin gerektiği şekilde verildiğini ve sonlandırıcı değerlerinin bazı veri değerlerinin bir parçası olarak kullanılmadığını doğrulayın.Lütfen sonlandırıcı değerleri ve veri değerleri arasındaki çakışmaları önlemek için rastgele onaltılık değerlere sahip varsayılan sonlandırıcıları (-t ve -r seçeneklerini kullanan) geçersiz kılmayı düşünün.

  • (Kullanıcı) Esas dize değeri ile çakışma olasılığını en aza indirmek için uzun ve benzersiz bir sonlandırıcı (bayt veya karakterlerin sırası) kullanın.Bu, -t ve -r seçenekleri kullanılarak gerçekleştirilebilir.

Örnekler

Bu bölümde aşağıdaki örnekler bulunur.

  • A.Tablo satırlarını veri dosyasına kopyalama (güvenilir bağlantı ile)

  • B.Tablo satırlarını veri dosyasına kopyalama (Karışık mod Kimlik Doğrulama ile)

  • C.Bir dosyadan tabloya veri kopyalama

  • D.Belirli bir sütunu veri dosyasına kopyalama

  • E.Belirli bir satırı veri dosyasına kopyalama

  • F.Bir sorgudan veri dosyasına veri kopyalama

  • G.XML olmayan biçim dosyası oluşturma

  • H.XML biçim dosyası oluşturma

  • I.bcp ile toplu alma için biçim dosyası kullanma

A.Tablo satırlarını veri dosyasına kopyalama (güvenilir bağlantı ile)

Aşağıdaki örnekte AdventureWorks2008R2.Sales.Currency tablosundaki out seçeneği gösterilmektedir.Bu örnekte Currency.dat adlı bir veri dosyası oluşturulur ve tablo bilgileri karakter biçimi kullanılarak bu dosyaya kopyalanır.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Komut isteminde, şu komutu girin:

bcp AdventureWorks2008R2.Sales.Currency out Currency.dat -T -c

B.Tablo satırlarını veri dosyasına kopyalama (karışık mod kimlik doğrulama ile)

Aşağıdaki örnekte Sales.Currency tablosundaki out seçeneği gösterilmektedir.Bu örnekte Currency.dat adlı bir veri dosyası oluşturulur ve tablo bilgileri karakter biçimi kullanılarak bu dosyaya kopyalanır.

Örnekte karışık moddaki kimlik doğrulamasını kullandığınız ve oturum açma kimliğinizi belirtmek için -U anahtarını kullanmanız gerektiği varsayılır.Ayrıca yerel bilgisayarda SQL Server varsayılan örneğine bağlanmadığınız takdirde, sistem adını ve isteğe bağlı olarak örnek adını belirtmek için -S anahtarını kullanın.

bcp AdventureWorks2008R2.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>

Sistem sizden parolanızı ister.

C.Bir dosyadan tabloya veri kopyalama

Aşağıdaki örnekte in seçeneği önceki örnekte oluşturulan dosya (Currency.dat) kullanılarak gösterilir.Öncelikle bu örnekte verilerin kopyalandığı Sales.Currency tablosu ve Sales.Currency2 öğesinin boş kopyası oluşturulur.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Boş tablo oluşturmak için Sorgu Düzenleyicisi'nde şu komutu girin:

USE AdventureWorks2008R2;
GO
SELECT * INTO AdventureWorks2008R2.Sales.Currency2 
FROM AdventureWorks2008R2.Sales.Currency WHERE 1=2

Karakter verilerini yeni tabloya toplu olarak kopyalamak yani verileri aktarmak için komut istemine şu komutu girin:

bcp AdventureWorks2008R2.Sales.Currency2 in Currency.dat -T -c

Komutun başarılı olduğunu doğrulamak için Sorgu Düzenleyicisi'nde tablo içeriğini gösterip şunu girin:

USE AdventureWorks2008R2;
GO
SELECT * FROM Sales.Currency2;

D.Belirli bir sütunu veri dosyasına kopyalama

Belirli bir sütunu kopyalamak için queryout seçeneğini kullanabilirsiniz.Aşağıdaki örnekte veri dosyasına yalnızca Sales.Currency tablosunun Name sütunu kopyalanır.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Windows komut isteminde şunu girin:

bcp "SELECT Name FROM AdventureWorks2008R2.Sales.Currency" queryout Currency.Name.dat -T -c

E.Belirli bir satırı veri dosyasına kopyalama

Belirli bir satırı kopyalamak için queryout seçeneğini kullanabilirsiniz.Aşağıdaki örnekte veri dosyasına (Jarrod Rana.dat) yalnızca Person.Person tablosundaki Jarrod Rana adlı kişiye ilişkin satır kopyalanır.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Windows komut isteminde şunu girin:

bcp "SELECT * FROM AdventureWorks2008R2.Person.Person WHERE FirstName='Jarrod' AND LastName='Rana' "  queryout "Jarrod Rana.dat" -T -c

F.Bir sorgudan veri dosyasına veri kopyalama

Veri dosyasına ilişkin Transact-SQL deyiminden sonuç kümesini kopyalamak için queryout seçeneğini kullanın.Aşağıdaki örnekte AdventureWorks2008R2.Person.Person tablosundaki adlar Contacts.txt veri dosyasına, soyadı ve ardından ad olacak şekilde kopyalanır.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Windows komut isteminde şunu girin:

bcp "SELECT FirstName, LastName FROM AdventureWorks2008R2.Person.Person ORDER BY LastName, Firstname" queryout Contacts.txt -c -T

G.XML olmayan biçim dosyası oluşturma

Aşağıdaki örnekte AdventureWorks2008R2 veritabanındaki Sales.Currency tablosu için Currency.fmt adlı XML olmayan biçim dosyası oluşturulur.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Windows komut isteminde şunu girin:

bcp AdventureWorks2008R2.Sales.Currency format nul -T -c  -f Currency.fmt

Daha fazla bilgi için, bkz. Olmayan xml biçimi dosyaları anlama.

H.XML biçim dosyası oluşturma

Aşağıdaki örnekte AdventureWorks2008R2 veritabanındaki Sales.Currency tablosu için Currency.xml adlı XML biçim dosyası oluşturulur.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Windows komut isteminde şunu girin:

bcp AdventureWorks2008R2.Sales.Currency format nul -T -c -x -f Currency.xml

Not

-x anahtarını kullanmak için bcp 9.0 istemcisi kullanıyor olmanız gerekir.bcp 9.0 istemcisini nasıl kullanacağınız hakkında bilgi için "Açıklamalar"a bakın.

Daha fazla bilgi için, bkz. xml biçimi dosyaları anlama.

I.bcp ile toplu alma için biçim dosyası kullanma

SQL Server örneğine veri alırken önceden oluşturulmuş bir biçim dosyası kullanmak için in seçeneği ile -f anahtarını kullanın.Örneğin aşağıdaki komut önceden oluşturulmuş biçim dosyasını (Currency.xml) kullanarak Currency.dat adlı veri dosyasının içeriğini Sales.Currency tablosunun bir kopyasına (Sales.Currency2) toplu olarak kopyalar.Örnekte Windows Kimlik Doğrulaması'nı kullandığınız ve bcp komutunda çalıştırdığınız sunucu örneği için güvenilir bir bağlantıya sahip olduğunuz varsayılır.

Windows komut isteminde şunu girin:

bcp AdventureWorks2008R2.Sales.Currency2 in Currency.dat -T -f Currency.xml

Not

Veri dosyası alanları tablo sütunlarından farklı olduğunda (örneğin sayı, sıralama veya veri türleri olarak) biçim dosyaları kullanışlıdır.Daha fazla bilgi için, bkz. Biçimi dosyaları veri verme veya alma için.