INF: การพัฒนาแพคเกจ DTS ปรับใช้ และประสิทธิภาพการทำงาน

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 242391 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

วัตถุประสงค์ของบทความนี้จะให้ข้อมูลบางอย่างละเอียดเพื่อช่วยในการพัฒนาและการใช้งานแพคเกจ SQL Server 7.0 ข้อมูลแปลงบริการ (DTS) นอกจากนี้ให้ใช้คำแนะนำสำหรับการปรับปรุงประสิทธิภาพของแพคเกจ

สำหรับรายละเอียดเกี่ยวกับเรื่องนี้ใน SQL Server 2000 ดู SQL Server หนังสือออนไลน์

ข้อมูลเพิ่มเติม

ทำให้ข้อมูลการเชื่อมต่อแบบยืดหยุ่น

แพคเกจ DTS ได้อย่างสมบูรณ์ self ที่อยู่หน่วย อ่านข้อมูลการเชื่อมต่อทั้งหมดในชุดเก็บรวบรวมคุณสมบัติของการเชื่อมต่อในขณะออกแบบ ข้อมูลการเชื่อมต่อแม้แต่ใน UDLs และ dsn ของ ODBC ถ้าคุณเปลี่ยน ODBC DSN หรือ UDL OLEDB หลังจากการสร้างแพคเกจ การเปลี่ยนแปลงนั้นมีแพคเกจไม่มีผล นี่คือสิ่งสำคัญจำเมื่อพยายามที่จะย้ายแพคเกจจากสภาพแวดล้อมการพัฒนาไปยังการผลิต

เมื่อคุณใช้การเชื่อมต่อข้อมูลของ SQL Server ใช้ (ภายในเครื่อง) สำหรับชื่อของเซิร์ฟเวอร์เพื่อทำให้ง่ายต่อการย้ายแพคเกจจากเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์เนื่องจากชื่อเซิร์ฟเวอร์ที่ถูกแก้ไขในแพคเกจเวลาการดำเนินการ caveat เดียวกับวิธีการนี้ไม่ว่า ต้องว่า แพคเกจจะรัน และแก้ไขบนคอมพิวเตอร์ของเซิร์ฟเวอร์ SQL ตัวเอง

คุณยังสามารถใช้งานสคริปต์การ ActiveX อินหรือโปรแกรม wrapper เพื่อปรับเปลี่ยนคุณสมบัติของแพคเกจที่ทำงาน การแก้ไขในแพคเกจจากภายในเอง สร้างงานที่มีสคริปต์ ActiveX ที่ precedes งาน pump ของข้อมูล และทำแก้ไขในแพคเกจในขณะที่เรียกใช้ การขอรับหมายเลขอ้างอิงการอ้างอิงแพคเกจ DTSGlobalVariables.Parent จากที่นั่น คุณสามารถเปลี่ยนคุณสมบัติของแพคเกจ ใด ๆ แม้ว่าต้องการเพียงเล็กน้อยมีทักษะที่โปรแกรม

ต่อไปนี้เป็นตัวอย่างจากหัว SQL หนังสือออนไลน์ข้อ "ActiveX สคริปต์งาน" เกี่ยวกับวิธีการเปลี่ยนแปลงคุณสมบัติการเชื่อมต่อแหล่งข้อมูล ด้วยสคริปต์ ActiveX การ:
   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
				
ถ้าคุณต้องการเพิ่มการควบคุม และไม่สนใจรหัสเพิ่มเติม ให้ลองแก้ไขในแพคเกจ ด้วยโปรแกรมภายนอกก่อนที่จะเรียกใช้ หรือสร้างแพคเกจจากการลบ

เมื่อต้องการสร้างโปรแกรมเพื่อโหลด และแพคเกจการปรับเปลี่ยน สร้างแพคเกจแม่แบบที่ใช้ตัวช่วยสร้างการ DTS หรือผู้ออกแบบ DTS และทำบันทึกไว้ เขียนโปรแกรม Visual Basic ที่โหลดแพคเกจ และการปรับเปลี่ยนคุณสมบัติที่ต้อง แล้วเรียกใช้วิธีดำเนินการบนวัตถุแพคเกจเรียกใช้แพคเกจ

เมื่อต้องการสร้างโปรแกรมจะสร้างแพคเกจจากลบ สร้างแพคเกจแบบโดยใช้ตัวช่วยสร้างการ DTS หรือผู้ออกแบบ DTS และบันทึกไปยัง SQL Server เฉพาะที่ ใช้โปรแกรมอรรถประโยชน์ ScriptPkg ในบทความฐานความรู้ของ Microsoft ต่อไปนี้เพื่อสร้างเท็มเพลตสำหรับรหัสแพคเกจ:
239454INF: เครื่องมือ ScriptPkg สร้างรหัสรูปแบบวัตถุ DTS จะใช้วิธีใช้ DTS โดยทางโปรแกรม
การใช้แม่แบบนี้เป็นการอ้างอิง เขียนรหัสของคุณในการสร้างแพคเกจที่ขึ้นอยู่กับผู้ใช้ในการป้อนข้อมูล

โปรดสังเกตว่า สำหรับทั้งสองกรณีที่เกิดก่อนหน้า โครงการ Visual Basic ต้องมีการอ้างอิงไปยังไลบรารีวัตถุ Microsoft DTSPackage

สิ่งสำคัญ: เมื่อดำเนินการเป็นแพคเกจจากโปรแกรมที่เขียนขึ้นใน Visual Basic และแพคเกจการตรวจสอบ หรือเหตุการณ์ของงาน ขั้นตอนทั้งหมดในแพคเกจต้องกำหนดค่าให้ใช้งานบนเธรดหลัก นี่คือเนื่องจากการมีข้อจำกัดใน Visual Basic ที่ป้องกันไม่ให้เรียกหลายพร้อมกับเหตุการณ์ของการจัดการอย่างถูกต้อง

แพคเกจที่ควบคุม ด้วยตัวแปรสากล

ตัวแปรส่วนกลางจะสามารถเข้าถึงได้จากการใช้งานสคริปต์ ActiveX กระแสงานสคริปต์ และแปลง ActiveX เท่านั้น จะไม่สามารถใช้ในคำสั่ง SQL หรือคุณสมบัติการเชื่อมต่อโดยตรง อย่างไรก็ตาม สามารถใช้งานสคริปต์ของ ActiveX ปรับเปลี่ยนคำชี้แจงของ SQL หรือคุณสมบัติการเชื่อมต่อที่ขึ้นอยู่กับตัวแปรส่วนกลาง ที่นี่คือตัวอย่างของ ActiveX งานสคริปต์ที่สามารถใช้การเปลี่ยนแปลงคำชี้แจง SQL สำหรับงาน pump ข้อมูลขึ้นอยู่กับตัวแปรส่วนกลางที่ชื่อว่า 'booktype':
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
				
หมายเหตุ:: คำอธิบายของงานถูกแสดงในตัวออกแบบ DTS แต่ไม่สามารถใช้เพื่ออ้างอิงการงานในสคริปต์การ ActiveX โดยตรง The name of the task should be used to reference the task from an ActiveX script. To get the name of the task look at the workflow properties for the step name. The task name is the same as the step except the word 'Step' is replaced with 'Task'. For example, DTSStep_DTSDataPumpTask_1 becomes DTSTask_DTSDataPumpTask_1.

Passing Parameters to a DTS Package

The DTSRun program does not accept any command line parameters that can be passed to the package at execution time. To pass information to a package at run-time, the parameters must be read from a file or queried from a database table programmatically.

หมายเหตุ:: If SQL Server 2000 tools or a named instance of SQL Server 2000 is installed on a server that has SQL Server 7.0 installed as the default instance, the DTSRun program can accept the command line parameter /A to pass values from the command line into global variables defined in a SQL Server 7.0 DTS Package.

Here is an example of an ActiveX Script Task that reads a line from a text file to set a global variable. This global variable could then be used to modify package behavior as shown in the "Controlling Packages with Global Variables" section of this article.
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
				
The following example shows how to use an ActiveX Script task to read parameters from a SQL Server table. The code reads the value of the paramvalue column in the my_param_table and uses it to set a global variable. This example uses SQL Distributed Management Objects (DMO) to interact with SQL Server, but you can accomplish the same thing by using ActiveX Data Objects (ADO) or another data access method.
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
				

Writing Custom DTS Tasks in Visual Basic

It is possible to write custom DTS tasks in Visual Basic. An example of a Custom Task in Visual Basic without a UI is available in the \Devtools\Samples\DTS directory on the SQL Server CD-ROM. Following are several common issues encountered when dealing with custom Visual Basic tasks in DTS:
  1. Custom tasks written in Visual Basic that implement an interface like DTS.CustomTaskUI MUST implement every event in the interface or they will cause an Access Violation.
  2. If you are developing a Visual Basic custom task with a UI, it is recommended that you apply SQL Server Service Pack 1 (SP1). SP1 incorporates several enhancements to ease UI development.
  3. Visual Basic Tasks are apartment threaded, while DTS is free threaded. In order to execute a task written in Visual Basic, it must be executed on the main thread or it will cause an Access Violation. DTS sets the appropriate flag by default. The user should not change this flag.

Obtaining Information on How to Code DTS Packages

In SQL 7.0, there are several samples on the CD-ROM under the \Devtools\Damples\DTS folder. These include a sample Custom Task (Visual Basic), and a Custom Transform (C++). Some sample packages are also in the self extracting executable DTSDemo.exe.

The most versatile example is ScriptPkg, which is part of Dtsdemo.exe. ScriptPkg contains the Visual Basic source code that converts a package saved to the local server into Visual Basic code. This example is best used for:
  1. Producing Visual Basic examples by scripting an existing DTS package.
  2. Showing how to code the DTS flatfile driver, which is not documented in SQL Books Online.
  3. Converting a package into text so it can be added to and tracked in SourceSafe.
The following are several known issues with the ScriptPkg example:
  1. Lookups for a data pump that are not scripted correctly.
  2. If the package is too large then the text generated cannot be treated as one function in Visual Basic due to a limitation on the number of lines in one function. You'll have to break the script file into multiple functions on your own to get Visual Basic to compile the code.

Enhancing DTS Package Performance

Using Parallel Loads

DTS is capable of running multiple tasks in parallel. However, each connection in a DTS package can only handle one thread at a time. That means that the following data pumps in a package are all serialized:

A -> B and A -> B
A -> B and A -> C
A -> B and C -> B

Whether or not you use the same or different icons for the connection makes no difference.

The only way to get parallel execution of tasks is to create multiple connections to the same database with different names. For example A -> B and C -> D are executed in parallel even if B and D are different connections to the same server and database.

Precedence constraints can be used to enforce task execution order and prevent parallelism for selected tasks as necessary.

Insert Commit Size

The most important parameter on the data pump task is theInsert Commit Size. คุณสมบัตินี้จะใช้ที่เกี่ยวข้องเฉพาะเมื่อปลายทาง ของ sql server โปรแกรมควบคุมจำนวนแถวที่มีขนาดใหญ่ที่แทรกก่อนที่ธุรกรรมถูกกำหนดให้ โดยค่าเริ่มต้น ซึ่งเป็น 0 แถวทั้งหมดจะเป็นส่วนหนึ่งของธุรกรรมเดี่ยว นี่คือการตั้งค่า safest เนื่องจากข้อผิดพลาดใด ๆ ใน SQL Server ย้อนกลับการเปลี่ยนแปลงทั้งหมด อย่างไรก็ตาม จะสามารถจำเป็นต้องมีการล็อกธุรกรรมที่มีขนาดใหญ่มาก นำไปสู่การนานมากเวลาตอบรับเมื่อมีการยกเลิกแพคเกจ และ counter ได้ผลดีเมื่อโหลดทั้งหมดล้มเหลวทำให้แถวเดียวที่ท้ายการโหลดที่ใหญ่ขึ้น หยุดชั่วคราว noticeable จะดูได้ในตอนท้ายของแต่ละช่วงเวลาที่ส่งในขณะที่แถวถูกกำหนดให้ 0 จำนวนยอมรับที่เร็วที่สุด แต่ค่าที่ดีอื่น ๆ จะ 10000, 1000 และ 1 ในลำดับของการลดความเร็ว 1 มีประโยชน์เนื่องจากแถวที่ 1 เท่านั้นถูกยกเลิกบนใด ๆ ล้มเหลว

โปรดสังเกตว่า การตั้งค่าการตรวจนับข้อผิดพลาดใด ๆ ตัวเลข > 1 ยังไม่มีผลหากขนาดยอมแทรกเป็น 0 จำนวนข้อผิดพลาดนับจำนวนของธุรกรรมที่มีข้อผิดพลาด ไม่จำนวนแถว

ใน SQL Server 7.0 คุณสามารถตั้งค่านี้ใส่ขนาดการยอมรับทรานแซค่าในการการย้ายข้อมูลส่วนในนั้นขั้นสูงการแท็บคุณสมบัติสำหรับงานที่ใช้แปลงข้อมูล

DTS และธุรกรรมที่มีการแจกจ่าย

แพคเกจ DTS ให้การสนับสนุนสำหรับธุรกรรมการกระจายสำหรับผู้ให้บริการเหล่านั้นที่รองรับ DTC บริการ DTC ต้องใช้งานสำหรับธุรกรรมแพคเกจและขั้นตอนการทำงาน นอกจากนี้ แต่ละตัวให้บริการในธุรกรรมต้องสนับสนุน DTC

คุณสมบัติของธุรกรรมแพคเกจจะควบคุมในแบบขั้นสูงแท็บคุณสมบัติแพคเกจ

โดยค่าเริ่มต้น แต่ละขั้นตอนในแพ็คเกจการจัดการกับธุรกรรมไว้ของคุณเอง และไม่พิกัดนั้นไหวผ่าน DTC เมื่อต้องการ enlist งานในทรานแซคชัน DTC คุณต้องเซ็ตกล่องกาเครื่องหมาย "รวมธุรกรรมถ้ามี" ในคุณสมบัติของกระแสงานของงาน ตัวเลือกธุรกรรมอื่น DTC สำหรับงานที่มี "ยอมรับทรานแซธุรกรรมในขั้นตอนนี้เสร็จเรียบร้อยแล้วเสร็จสมบูรณ์" และ "ธุรกย้อนกลับรรมล้มเหลว

โปรดสังเกตว่า แพคเกจไม่สนับสนุน Microsoft ทรานแซคชัน Server (MTS)

ข้อความแจ้งข้อผิดพลาด

เมื่อคุณใช้ภายในเครื่องสำหรับเซิร์ฟเวอร์ฐานข้อมูลสำหรับการเชื่อมต่อจากแพคเกจ และแพคเกจกำลังแก้ไขจากเซิร์ฟเวอร์อื่น และบุคคลที่ต้องการดูการแปลง ข้อความแสดงข้อผิดพลาดต่อไปนี้เกิดขึ้น:
ผู้แหล่งที่มาของข้อผิดพลาด: Microsoft OLE DB ให้สำหรับคำอธิบายข้อผิดพลาดของเซิร์ฟเวอร์ SQL: ไม่สามารถเปิดฐานข้อมูลที่ร้องขอในการเข้าสู่ระบบ 'xxxxxxx' ได้ เข้าสู่ระบบไม่

คุณสมบัติ

หมายเลขบทความ (Article ID): 242391 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • Microsoft SQL Server 7.0 Standard Edition
Keywords: 
kbinfo kbmt KB242391 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:242391

ให้ข้อเสนอแนะ

 

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