Fichier INF: développement package DTS, déploiement et performances

Traductions disponibles Traductions disponibles
Numéro d'article: 242391 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article vise pour fournir certaines des informations détaillées pour faciliter le développement et le déploiement de packages SQL Server 7.0 Data Transformation Services (DTS). Conseils pour améliorer les performances de package sont également fournies.

Pour plus d'informations sur ce sujet dans SQL Server 2000, consultez documentation en ligne de SQL Server.

Plus d'informations

Rendre les connexions de données flexible

Un lot DTS est une unité self contenu complètement. Toutes les informations de connexion sont lu dans la collection de propriétés de connexion lors de la conception, les informations de connexion même dans UDLs et sources de données ODBC. Si vous modifiez le nom de source de données ODBC ou UDL le OLEDB après avoir créé le package, cette modification n'a aucun effet sur le package. Ceci est important à retenir lorsque vous tentez de migrer les packages d'un environnement de développement vers production.

Lorsque vous utilisez connexions de données SQL Server, utilisez (local) pour le nom de serveur pour faciliter la déplacer le package de serveur à serveur car le nom du serveur est résolu lors de l'exécution package. L'un inconvénient de cette approche est qu'elle nécessite que le package être exécuté et modifié sur le SQL ordinateur Server proprement dit.

Vous pouvez également utiliser une tâche de script ActiveX ou un programme de wrapper pour modifier des propriétés du package lors de l'exécution. Pour modifier le package à partir en lui-même, créer une tâche de script ActiveX qui précède les tâches de pompe de données et modifier le package lorsqu'elle est exécutée. Pour obtenir un handle à la référence de package DTSGlobalVariables.Parent. À partir de là vous pouvez modifier les propriétés du package, bien qu'il nécessite un peu compétence de programmation.

Voici un exemple de la rubrique documentation en ligne de SQL, « tâches Script ActiveX, « comment modifier la propriété de connexion de source de données avec un script 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
				
si vous souhaitez avoir davantage de contrôle et ne pas occuper davantage de codage, envisagez de modifier le package avec un programme externe avant d'être exécuté ou créer le package de toutes pièces.

Pour créer un programme à charger et modifier un package, créez le package de modèle en utilisant l'Assistant DTS ou du concepteur DTS et enregistrez-le. Écrire un programme Visual Basic qui charge le package et modifie les propriétés souhaitées, puis appeler la méthode Execute sur l'objet package pour exécuter le package.

Pour créer un programme pour créer un package à partir de zéro, créez un package prototype utilisant l'Assistant DTS ou du concepteur DTS et enregistrez-le sur le serveur SQL local. Utiliser l'utilitaire ScriptPkg dans l'article suivant de la base de connaissances Microsoft pour créer un modèle pour le code de package :
239454 Fichier INF: outil ScriptPkg génère DTS le code modèle objet pour utiliser Aide DTS par programme
En utilisant ce modèle comme référence, écrivez votre propre code pour générer un package en fonction de l'entrée utilisateur.

Notez que pour deux des situations précédentes, le projet Visual Basic doit une référence à la bibliothèque d'objets Microsoft DTSPackage.

IMPORTANT : lors de l'exécution d'un package d'un programme écrit en Visual Basic et surveillance package ou événements de la tâche, toutes les étapes dans le package doivent être configurés pour exécuter sur le thread principal. Cela est dû à une limitation dans Visual Basic qui empêche correctement gérer plusieurs appels simultanés à ses événements.

Contrôle des packages avec des variables principal

Variables globales sont uniquement accessibles à partir de tâches script ActiveX, les scripts du flux de travail et transformations ActiveX. Il ne peut pas être utilisés directement dans instructions SQL ou des propriétés de connexion. Toutefois, une tâche de script ActiveX utilisable pour modifier une instruction SQL ou des propriétés de connexion basées sur une variable globale. Voici un exemple de tâche de script ActiveX qui peut servir à modifier l'instruction SQL à une tâche de pompe de données en fonction de la variable globale nommée « 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
				
Remarque : la description d'une tâche est affichée dans le Concepteur DTS, mais elle ne peut pas être utilisée pour faire directement référence à une tâche dans un script ActiveX. Le nom de la tâche doit être utilisé pour faire référence à la tâche à partir d'un script ActiveX. Pour obtenir le nom de la tâche, examinez les propriétés de flux de travail pour le nom de l'étape. Le nom de la tâche est celle l'étape à l'exception du mot « pas » est remplacé par « Office ». Par exemple, DTSStep_DTSDataPumpTask_1 devient DTSTask_DTSDataPumpTask_1.

Passage des paramètres pour un lot DTS

Le programme DTSRun n'accepte pas les paramètres de ligne de commande qui peuvent être passés au package lors de l'exécution. Pour passer les informations dans un package à l'exécution, les paramètres doivent être lu à partir d'un fichier ou interrogées à partir d'une table de base de données par programmation.

Remarque : Si Outils SQL Server 2000 ou une instance nommée de SQL Server 2000 est installée sur un serveur sur lequel SQL Server 7.0 est installé en tant que l'instance par défaut, le programme DTSRun peut accepter le paramètre de ligne de commande /A pour passer les valeurs à partir de la ligne de commande dans des variables globales définies dans un lot DTS de SQL Server 7.0.

Voici un exemple d'une ressource de script ActiveX qui lit une ligne à partir d'un fichier texte pour définir une variable globale. Cette variable globale peut ensuite servir à modifier le comportement de package comme illustré dans la section « contrôle le packages avec variables globale » de cet 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
				
L'exemple suivant indique comment utiliser une tâche de script ActiveX lecture des paramètres à partir d'une table SQL Server. Le code lit la valeur de la colonne paramvalue dans le my_param_table et l'utilise pour définir une variable globale. Cet exemple utilise DMO (SQL Distributed Management Objects) pour interagir avec SQL Server, mais vous pouvez accomplir la même chose à l'aide (ActiveX Data Objects) ou une autre méthode d'accès aux données.
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
				

Écrivez du code personnalisé les tâches DTS en Visual Basic

Il est possible d'écrire des tâches DTS personnalisées dans Visual Basic. Un exemple d'une tâche personnalisée dans Visual Basic sans une interface utilisateur est disponible dans le répertoire \Devtools\Samples\DTS sur le CD-ROM de SQL Server. Voici plusieurs problèmes courants rencontrés lors du traitement des tâches de Visual Basic personnalisés de DTS :
  1. Tâches personnalisées écrites dans Visual Basic qui implémentent une interface comme DTS.CustomTaskUI doit implémenter chaque événement dans l'interface ou elles va provoquer une violation d'accès.
  2. Si vous développez une tâche personnalisée Visual Basic avec une interface utilisateur, il est recommandé d'application de SQL Server Service Pack 1 (SP1). Service Pack 1 intègre plusieurs améliorations pour faciliter le développement de l'interface utilisateur.
  3. Tâches Visual Basic sont cloisonné thread, tandis que DTS est thread libre. Pour exécuter une tâche écrite en Visual Basic, il doit être exécuté sur le thread principal ou qu'il va provoquer une violation d'accès. DTS définit l'indicateur approprié par défaut. L'utilisateur doit modifier pas cet indicateur.

Obtention d'informations sur comment faire pour code de packages DTS

Dans SQL 7.0, il existe plusieurs exemples sur le CD-ROM dans le dossier \Devtools\Damples\DTS. Ceux-ci incluent un exemple de tâches personnalisés (Visual Basic) et un personnalisé transformation (C++). Certains packages d'exemple sont également dans la automatique extraction DTSDemo.exe exécutable.

L'exemple plus polyvalent est ScriptPkg, qui fait partie de Dtsdemo.exe. ScriptPkg indique le code de source de Visual Basic qui convertit un package enregistré sur le serveur local en code Visual Basic. Cet exemple est plus utilisé pour :
  1. Production exemples Visual Basic par script un package DTS existant.
  2. Montrant comment le pilote flatfile DTS de code, qui n'est pas documentée dans la documentation en ligne de SQL.
  3. Convertir un package en texte pour qu'il peut être ajouté à et suivie dans SourceSafe.
Voici plusieurs problèmes connus avec le exemple ScriptPkg :
  1. Recherches pour une pompe de données qui sont scriptés pas correctement.
  2. Si le package est trop volumineux puis le texte généré ne peut pas être traité comme une fonction dans Visual Basic en raison d'une limitation du nombre de lignes dans une fonction. Vous devrez scinder le fichier de script en plusieurs fonctions à votre rythme pour obtenir Visual Basic pour compiler le code.

Amélioration des performances de package DTS

L'aide de chargement parallèle

DTS est capable d'exécuter plusieurs tâches en parallèle. Toutefois, chaque connexion dans un lot DTS peut uniquement gérer un seul thread à la fois. Cela signifie que suivant data pumps dans un package sont tous sérialisés :

A-> B et A-> B
A-> B et A-> C
A-> B et C-> B

Si vous n'utilisez les icônes identiques ou différents pour la connexion fait aucune différence.

Le seul moyen d'obtenir l'exécution en parallèle de tâches consiste à créer plusieurs connexions à la même base de données avec des noms différents. Par exemple A-> B et C-> D sont exécutés en parallèle même si B et D sont différentes connexions à la même serveur et de la base de données.

Contraintes de priorité utilisable pour appliquer l'ordre d'exécution tâche et empêcher le parallélisme des tâches sélectionnées que nécessaire.

Insérer la taille de la validation

Le paramètre plus important de la tâche de pompe de données est la taille de la validation insérer . Cette propriété est uniquement appropriée lorsque la destination est SQL Server. Il contrôle le nombre de lignes exprimées en bloc inséré avant la transaction est validée. Par défaut, il est 0, toutes les lignes font partie d'une seule transaction. Ceci est le paramètre plus sûr car sur toute erreur SQL Server annule toutes les modifications. Cependant, il peut nécessitent un journal des transactions volumineuses, délai à très longue réponse lorsqu'un package est annulé et être compteur productifs lorsqu'une seule ligne à la fin d'une charge importante entraîne par la charge entière Échec. Une pause notable est visible à la fin de chaque intervalle de validation alors que les lignes sont validées. Une taille de la validation de 0 est plus rapide, mais autres bonnes valeurs sont 10 000, vitesse 1 000 et 1 ordre de diminution. 1 est utile car uniquement une ligne est restaurée en tout cas d'échec.

Remarquez que le paramétrage le nombre d'erreurs de n'importe quel nombre > 1 n'a aucun effet si la taille de la validation insérer est 0. Le nombre d'erreurs compte le nombre de transactions avec des erreurs, pas le nombre de lignes.

Dans SQL Server 7.0, vous pouvez définir la valeur de taille de la validation insérer dans la section de déplacement de données sous l'onglet Avancé des propriétés de la tâche de transformation de données.

Transactions distribuées et DTS

Packages DTS prennent en charge des transactions distribuées pour les fournisseurs qui prennent en charge de DTC. Le service DTC devez exécuter pour package et les transactions étape pour fonctionner. En outre, chaque fournisseur dans la transaction doit prendre en charge DTC.

Les propriétés de transactions du package sont contrôlées dans l'onglet Options avancées des propriétés du package.

Par défaut, chaque étape d'un package gère son propre transactions et ne pas coordonner les transactions c'est via DTC. Pour inscrire une tâche dans une transaction DTC vous devez définir la case à cocher « Joindre transaction s'il est présent » dans Propriétés de flux de travail de la tâche. Autres options de transaction DTC pour une tâche sont « validation transaction de réussite de cette étape » et « transaction ROLLBACK en cas d'échec ».

Notez que les packages ne prennent pas en charge Microsoft Transaction Server (MTS).

Message d'erreur

Lorsque vous utilisez locale de la base de données serveur pour une connexion à partir d'un package et le package est ensuite modifié à partir d'un autre serveur et cette personne souhaite examiner les transformations, le message d'erreur suivant se produit :
Erreur source : fournisseur Microsoft OLE DB pour la description de l'erreur SQL Server : Impossible d'ouvrir de base de données demandée dans la connexion « xxxxxxx ». Ouverture de session échoue. »

Propriétés

Numéro d'article: 242391 - Dernière mise à jour: lundi 25 novembre 2002 - Version: 1.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 7.0 Standard
Mots-clés : 
kbmt kbinfo KB242391 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 242391
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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