INF: DTS paketi geliştirme, dağıtımı ve performansı

Makale çevirileri Makale çevirileri
Makale numarası: 242391 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalenin amacı, geliştirme ve SQL Server 7.0 Data Transformation Services (DTS) paketlerinin dağıtımını yardımcı olacak bazı ayrıntılı bilgiler sağlamaktır. Paket performansını artırma için ipuçları da sağlanmıştır.

SQL Server 2000'de bu konu hakkında daha fazla bilgi için SQL Server Books Online'da bakın.

Daha fazla bilgi

Veri bağlantıları esnek bir hale getirme

Bir DTS paketini bir tamamen bulunan kendi kendini birimidir. Tasarım zamanında UDLs ve ODBC DSN bile bağlantı bilgilerini bağlantı özelliklerini koleksiyon, tüm bağlantı bilgilerini okuyun. Paket oluşturduktan sonra ODBC DSN veya OLEDB UDL değiştirirseniz, bu paket üzerinde etkisizdir. Bu paketler geliştirme ortamından üretim için geçirilecek çalışırken hatırlamanız önemlidir.

SQL Server veri bağlantıları'nı kullandığınızda, (yerel) sunucu adı için sunucu adını paketi yürütme zaman çözümlenen başlatıldığından bu yana, sunucular için paket taşımak kolaylaştırmak için kullanın. Bu yaklaşımın bir tek uyarı bu paketi çalıştırmak ve SQL göre düzenlenmiş gerektirmesidir Server bilgisayarın kendisi.

Çalışma zamanında paketi özelliklerini değiştirmek için ActiveX komut dosyası herhangi bir görev veya sarmalayıcı programı kullanabilirsiniz. Paketten kendi içinde değiştirmek için <a0></a0>, veri pump görevleri önündeki bir ActiveX komut dosyası görev oluşturabilir ve sonra da çalışırken, paketin değiştirin. Paket DTSGlobalVariables.Parent başvuru için bir tanıtıcı elde etmek için <a0></a0>. Buradan, biraz programlama yetenek gerektirse de, paket özellikleri değiştirebilirsiniz.

SQL Books Online'da konu seçin (bir ActiveX komut dosyası DataSource bağlantısı özelliğiyle konusunda, "ActiveX komut dosyası görevler" den verilmiştir:
   Function main()
   dim oPackage
   dim oConn

     'Get package object
     set oPackage = DTSGlobalVariables.parent
     'Get a handle to the desired connection.
     set oConn = oPackage.connections(1)
     'Modify the datasource.
     oConn.datasource = "newServerName"

     'Release object handles.
     set oPackage = nothing
     set oConn = nothing

    Main = DTSTaskExecResult_Success
End function
				
daha fazla denetim istiyorsanız ve sizin için daha fazla kodlama sorun değil, yeniden çalıştırmadan önce bir dış program paketiyle değiştirmek veya sıfırdan paket oluşturma göz önünde bulundurun.

Bir programı yüklemek ve bir paket oluşturmak için <a0></a0>, DTS sihirbaz veya DTS Tasarımcısı'nı kullanarak şablon paketi oluşturun ve kaydedin. Bir Visual Basic programı paketi yükler ve istediğiniz özellikleri değiştirir, sonra paketi nesnesinde paketi çalıştırmak için Execute yöntemini çağırın yazın.

Sıfırdan bir paket oluşturmak için bir program oluşturmak için <a0></a0>, DTS sihirbaz veya DTS Tasarımcısı'nı kullanarak bir prototip paketi oluşturmak ve sonra da yerel SQL sunucusuna kaydedin. ScriptPkg yardımcı programı, paketi kodu için bir şablon oluşturmak için aşağıdaki Microsoft Knowledge Base makalesinde kullanın:
239454: INF DTS nesne modeli Yardım kullanma DTS kodu alanı'ndaki ScriptPkg aracı programsal olarak oluşturur
Bu şablon, başvuru olarak kullanarak, kullanıcı girişini temel alan bir paket oluşturmak için kendi kodunuzu yazın.

Her ikisi de önceki durumlar için Visual Basic projesinin Microsoft DTSPackage Nesne Kitaplığı'na bir başvuru olması gerektiğini unutmayın.

ÖNEMLI: ana iş parçacığı üzerinde yürütülecek bir paket, Visual Basic ve izleme paketi veya görev olayları yazılan bir programdan çalıştırmak, paketindeki tüm adımları yapılandırılmalıdır. Bu Visual Basic'te, aynı anda birden çok çağrı olaylarını düzgün işleme engelleyen bir sınırlama kaynaklanmaktadır.

Global değişkenler paketleriyle denetleme

Genel değişkenler, ActiveX komut dosyası görevleri, iş akışı komut dosyaları ve ActiveX dönüştürmeleri erişilebilir. Bunlar, doğrudan SQL deyimlerini veya bağlantı özellikleri kullanılamaz. Ancak, bir <a0>ActiveX</a0> komut görevi, bir SQL deyimini veya bir genel değişkeni dayalı olan bağlantı özelliklerini değiştirmek için kullanılabilir. 'Booktype' adlı genel değişkeni üzerinde temel veri pump görev için SQL deyimini değiştirmek için kullanılan ActiveX komut dosyası görevinin bir örnek:
Function Main()
   dim oPackage
   dim oPump

        'Get a handle to the Package object.
	set oPackage = DTSGlobalVariables.Parent
	'Get a handle to the desired Datapump Task.
	set oPump = oPackage.Tasks("DTSTask_DTSDataPumpTask_1").CustomTask   
	'Alter the datapump SQL statement.
	oPump.SourceSQLStatement = "select * from pubs..titles WHERE type _
  = ''" + DTSGlobalVariables("booktype") + "''"
	Main = DTSTaskExecResult_Success
End Function
				
Not: bir görevin açıklamasını DTS Tasarımcısı ' görüntülenir, ancak göreve ActiveX komut dosyasındaki'doğrudan başvuracak biçimde kullanılamaz. Görevin adını, bir ActiveX komut dosyasından görev başvurmak için kullanılmalıdır. Iş akışı özellikleri görev bakma adını adım adını almak için <a0></a0>. Görev adı adım 'Task'ile ' yerine 'Adım' sözcüğü dışında aynıdır. Örneğin, DTSStep_DTSDataPumpTask_1 DTSTask_DTSDataPumpTask_1 olur.

Bir DTS paketi için geçirme parametreleri

DTSRun program paketin yürütülmesi sırasında geçirilen komut satırı parametreleri kabul etmez. Çalışma zamanında bir paket için bilgi aktarmak için <a0></a0>, Parametreler olmalı bir dosyadan okuma veya bir veritabanı tablosunun programsal olarak sorgulanan.

Not: SQL Server 2000 araçları veya SQL Server 2000 adlandırılmış bir örneği SQL Server 7.0'ın varsayılan örneği olarak yüklü olduğu bir sunucuda yüklüyse DTSRun programı komut satırı parametresini kabul edebilir /A içine bir SQL Server 7.0 DTS paketi tanımlanan genel değişkenler, komut satırından değerleri geçirmek için.

Bir satır için bir genel değişkeni bir metin dosyasından okur bir ActiveX komut dosyası görev örneği şöyledir. Bu genel değişkeni, daha sonra bu makalenin "Paketleri genel değişkenleri ile denetlemek" bölümünde gösterilen paketi davranışını değiştirmek için kullanılabilir.
Function main()
  Dim fso	'This will serve as a handle to a file system object.
  Dim ofile	'Handle for accessing a file.

    'Get a file system object for manipulation files.
    Set fso = CreateObject("Scripting.FileSystemObject")

    'Open the text file.
    Set ofile = fso.OpenTextFile("c:\test.txt")

    'Read line from the file into the global variable.
    DTSGlobalVariables("myGlobalVar").Value = ofile.ReadLine

    'Close the "parameter" file.
    ofile.Close

    Main = DTSTaskExecResult_Success
End function
				
Aşağıdaki örnek, bir ActiveX komut dosyası görev parametreleri, bir SQL Server tablosundan okumak için nasıl kullanılacağını gösterir. Kod, my_param_table paramvalue sütununun değerini okur ve genel değişken olarak belirlemek için kullanır. Bu örnek, SQL Server ile etkileşim kurmak için SQL Distributed Management Objects (DMO) kullanır, ancak aynı şey, ActiveX Data Objects (ADO) veya başka bir veri erişim yöntemini kullanarak yapabilirsiniz.
Function main()
Dim oServer 		'DMO Server object.
Dim oResult		'Result set.
Dim sParamValue

	'Create a SQLDMO server object.
	Set oServer =  CreateObject("SQLDMO.SQLServer")

	' Make a connection to the local server.
	oServer.Connect ".", "sa"

	'Select the desired row from the table.
	set oResult = oServer.Databases("pubs").ExecuteWithResults_
("select  paramvalue from  my_param_table")

	'Retrieve the first row, first column from the results.
	sParamValue = oResult.GetColumnString (1,1)

	'Set the global variable.
	DTSGlobalVariables("MyGlobalVar").Value = sParamValue

	Main = DTSTaskExecResult_Success
End function
				

Visual Basic'te DTS görevler özel yazılıyor

Visual Basic'te özel DTS görevleri yazılamıyor olabilir. Visual Basic'te, bir kullanıcı ARABIRIMI olmadan bir özel görev örneği, SQL Server CD'sini \Devtools\Samples\DTS dizinindeki kullanılabilir. Karşılaşılan DTS içinde özel Visual Basic görevlerle ilgili bazı sık karşılaşılan sorunlar şunlardır:
  1. DTS.CustomTaskUI GEREKIR gibi bir arabirim uygulayan Visual Basic'te yazılmış özel görevler arabiriminde her olay uygulamak ya da erişim ihlaline neden olur.
  2. Bir kullanıcı ARABIRIMI ile özel bir Visual Basic görev geliştiriyorsanız, SQL Server Service Pack 1 (SP1) uygulama önerilir. SP1 UI geliştirme kolaylaştırmak için çeşitli geliştirmeler içerir.
  3. Visual Basic görevler, apartman iş DTS serbest iş parçacığına sahip sırada, ' dir. Visual Basic'te yazılmış bir görevi çalıştırmak için ana iş parçacığında yürütülen veya erişim ihlaline neden olur. DTS uygun bayrağı, varsayılan olarak ayarlar. Kullanıcı, bu bayrağın değiştirmemelisiniz.

Kod DTS Packages nasıl hakkında bilgi edinme

SQL 7. 0'da, vardır birkaç örnek \Devtools\Damples\DTS klasörü altında CD-ROM'undaki. Bunlar, örnek bir özel görev (Visual Basic) ve bir özel dönüştürme (C++) içerir. Bazı örnek paketleri de yürütülebilir DTSDemo.exe ayıklama kendi kendini durumdadır.

Dtsdemo.exe bir parçası olan ScriptPkg çok yönlü örnektir. ScriptPkg Visual Basic koduna yerel sunucuya kaydedilen bir paket dönüştüren Visual Basic kaynak kodunu içerir. Bu örnek için en iyi şekilde kullanılır:
  1. Visual Basic örnekler, varolan bir DTS paketini komut dosyası tarafından üretir.
  2. DTS flatfile sürücüyü nasıl gösteren, hangi SQL çevrimiçi açıklanmamıştır.
  3. Paket, eklenen ve olması SourceSafe izlenen şekilde metne dönüştürme.
ScriptPkg örnek birkaç bilinen sorunlar şunlardır:
  1. Komut doğru dosyası olmayan aramaları için bir veri pump.
  2. Paket sonra oluşturulan metin bir işlevi satır sayısına bir kısıtlama yüzünden Visual Basic'te bir işlevi olarak nitelenmesini edemiyor çok büyükse. Birden fazla işlevi kodunu derlemek için Visual Basic almak için kendi içine komut dosyası kesmek zorunda kalırsınız.

DTS paketi performans geliştirme

Parallel yükü kullanma

DTS paralel olarak birden çok görevi çalıştırabilen ' dir. Ancak, her bağlantı, bir DTS paketini bir kerede yalnızca bir iş parçacığının işleyebilir. Bu durum, aşağıdaki veri pumps'paketteki tüm sıralanmış, anlamına gelir:

A, B ve B-> A->
A, B ve C-> A->
A, B ve C, B->->

Bağlantı için aynı veya farklı simgeleri kullanın olup olmadığını fark yapar.

Görevleri paralel olarak yürütülmesini almanın tek yolu, farklı adlarla aynı veritabanını birden çok bağlantı oluşturmaktır. Örneğin A-> B ve C, D-> yürütülen paralel bile, B ve b olan sunucuyu ve veritabanını farklı bağlantılar.

Öncelik kısıtlamaları, görev yürütme sırasında zorlamak ve gerektiği gibi seçili görevler için parallelism engellemek için kullanılabilir.

Kayıt boyutu Ekle

En önemli parametre ve veri pump görevdeki Commit boyutu Ekle ' dir. Bu özellik, yalnızca hedef SQL Server olduğunda geçerlidir. Bu toplu işlem edinmiştir eklenmesini kaç satır olduğunu denetler. Varsayılan olarak bu 0; tüm satırları tek bir işlem parçasıdır. Herhangi bir hata SQL Server tüm değişiklikleri geri alır, çünkü en güvenli ayar budur. Ancak, çok büyük bir işlem günlüğü gerektirir, yol çok uzun yanıt süresini Paketi iptal edildi ve sayaç gibi üretken, tek bir satırda büyük bir yük sonunda tüm yükü başarısız olmasına neden olduğunda. Fark duraklama satırları kabul edilendir, ancak her <a0>commit</a0> aralığının sonunda görünür. Bir kayıt boyutu 0 en hızlı, ancak 10.000 iyi diğer değerler, azalan 1000 ve 1 içinde sırasıyla hızlandırın. 1, yalnızca 1 satır herhangi bir hata döndürülüyor için yararlıdır.

Ekleme tamamlama boyutu 0 ise hata sayısı her numara > 1 olarak ayarlamanın hiçbir etkisi olduğunu unutmayın. Hata sayısı hatasız satırların sayısını değil hareketleri sayar.

SQL Server 7. 0'dönüşümü veri görev özellikleri <a1>Gelişmiş</a1> sekmesinde Veri taşıma bölümünde Ekle Commit boyut değeri ayarlayabilirsiniz.

DTS ve dağıtılmış hareketleri

DTS paketlerini, DTC destekleyen sağlayıcılar için dağıtılmış işlemler için destek sağlar. DTC hizmetinin çalışması paket ve adım hareketlerinde çalıştırıyor olmalısınız. Buna ek olarak, hareketin her sağlayıcıda DTC desteklemelidir.

Paket hareket özellikleri, paket özellikleri'nin Gelişmiş sekmesinde denetlenir.

Varsayılan olarak, her bir paket adımda bu kendi hareketleri işleme ve kendi üzerinden DTC hareketleri düzenlemez. Göreve bir DTC hareketinde listeleme "varsa, hareket alanına" onay kutusunu görevinin iş akışı özellikleri ayarlamanız gerekir. Görev için diğer bir DTC işlem seçeneklerini olan "Tamamlama işlem başarıyla tamamlandığında, bu adımı" ve "Başarısızlık hareketi geri alma".

Not Microsoft Transaction Server (MTS) paketleri desteklemez.

Hata iletisi

Yerel veritabanı sunucusu arasında paket bağlantı için kullandığınız paketi, daha sonra başka bir sunucudan düzenleniyor ve o kişinin sırasında dönüşümler aramak ister, aşağıdaki hata iletisini oluşur:
Hata kaynağı: Microsoft OLE DB Provider for SQL Server hata açıklaması: oturum açma 'xxxxxxx' istenen veritabanı açılamıyor. Oturum açma başarısız:."

Özellikler

Makale numarası: 242391 - Last Review: 25 Kasım 2002 Pazartesi - Gözden geçirme: 1.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbmt kbinfo KB242391 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:242391

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com