Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Lot DTS [ Archives / Divers ] (io_ost)

jeudi 30 mars 2006 à 09:34:39 | Lot DTS

io_ost

Membre Club


[ Lien ]


 Bonjour,

 Je met à jour une base SQL depuis une page aspx

 J'arrive bien à executer mon Lot DTS local depuis mon client (depuis ma page aspx)

 Pour info : trouver sur le site Microsoft
[ Lien ]

 Je souhaiterais integrer le code de mon Lot (majvb.bas provenant d'un
serveur SQL2000) directement dans  le code de ma page mais je me retrouve avec 
plusieurs erreurs
Je  ne sais pas si cela est vraiment l'endrois pour ce genre de question
donc je ne vais pas enumerer les erreur et le solution que j'ai trouver
 pourriez vous m'indiquer une page traitant de la convertion du code de mon
lot  ***vb.bas vers VB.net ??
 

en fait je voudrais juste passer en variable à mon lot le path du fichier
source de mise à jour (xls).

car pour le moment il conserve (bien evidement le path que j'ai creer dans le lot sur le serveur SQL) je suis donc obliger de mettre mon fichier de mise à jour exactement aux même endroit sur mon client .

merci !!!


jeudi 30 mars 2006 à 14:19:48 | Re : Lot DTS

Mindiell

Peux tu nous montrer le début de ton lot au niveau requetes ? Parce que là, ca reste flou...

jeudi 30 mars 2006 à 18:54:45 | Re : Lot DTS

io_ost

Membre Club
ok je commence :

j'excecute mon lot à partir de ma page aspx comme ça :
C'est juste pour info pour ceux que ça intéressse ^_^ mon problème est plus bas !!
j'utilise le code behind :

Protected Sub BtnMaj_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnMaj.Click

Dim oPkg, oStep, sMessage, bStatus

oPkg = Server.CreateObject("DTS.Package")

Const DTSSQLStgFlag_UseTrustedConnection = 256

oPkg.LoadFromSQLServer("SERVEUR", "", "", DTSSQLStgFlag_UseTrustedConnection, "", "", "", "Maj2")

oPkg.Execute()

bStatus = True

For Each oStep In oPkg.Steps

If oStep.ExecutionResult = 1 Then

sMessage = sMessage & "<p>" & "Step [" & oStep.Name & "] "

sMessage = sMessage & " a termin‚<br>"

bStatus = False

End If

Next

If bStatus Then

sMessage = sMessage & "<p>Package [" & oPkg.Name & "] éxécuter avec succès</p>"

Else

sMessage = sMessage & "<p>Package [" & oPkg.Name & "] a échoué.</p>"

End If

oStep = Nothing

oPkg = Nothing

LblReponse.Text = (sMessage)

End Sub

bon ça ça marche nickel !!
il faut au préalable créer son lot sur son serveur !

mon problème c'est que je voudrais passer en variable la source de ce lot :

j'ai donc enregitrer mon lot en vb.bas à partir de l'entreprise manager...
ça nous donne : après ajout des référence DTS :
Après correction trouver sur dtssql.com ça donne ça :

J'ai mis presque tous  le code de mon lot mais je n'est que 3 erreurs écrite en très gros et en rouge et j'ai mis quelques commentaires en rouge également (j'espère ne pas être trop relou !!!)

Option Explicit On ''A AJOUTER

Imports DTS         ''A AJOUTER

Imports DTSPump  ''pareil

Imports DTSCustTasks  '' la je suis pas sûr

Partial Class param

Inherits System.Web.UI.Page

Private Sub Main()

dim goPackageOld As New DTS.Package

dim goPackage As DTS.Package2

goPackage = goPackageOld

goPackage.Name = "Maj2"

goPackage.Description = "Description de lot DTS"

goPackage.WriteCompletionStatusToNTEventLog = False

goPackage.FailOnError = False

goPackage.PackagePriorityClass = 2

goPackage.MaxConcurrentSteps = 4

goPackage.LineageOptions = 0

goPackage.UseTransaction = True

goPackage.TransactionIsolationLevel = 4096

goPackage.AutoCommitTransaction = True

goPackage.RepositoryMetadataOptions = 0

goPackage.UseOLEDBServiceComponents = True

goPackage.LogToSQLServer = False

goPackage.LogServerFlags = 0

goPackage.FailPackageOnLogFailure = False

goPackage.ExplicitGlobalVariables = False

goPackage.PackageType = 0

 

Dim oConnProperty As DTS.OleDBProperty

'---------------------------------------------------------------------------

' create package connection information

'---------------------------------------------------------------------------

Dim oConnection As DTS.Connection2

'------------- a new connection defined below.

'For security purposes, the password is never scripted

'oConnection = goPackage.Connections.New("Microsoft.Jet.OLEDB.4.0")

'oConnection.ConnectionProperties(
"Data Source") = '"C:\Inetpub\wwwroot\upload\Maj.xls"  ''c'est ça que je veux en variable !!!!

''Sinon il vient le chercher aux même endroit sur le client!!!

 

oConnection.ConnectionProperties("Extended Properties") = "Excel 8.0;HDR=YES;"

''CODE QU'IL FAUT D'AILLEUR MODIFIER EN :

oConnection.ConnectionProperties.item("Data Source") .value= "C:\Inetpub\wwwroot\upload\Maj.xls"   

oConnection.ConnectionProperties.item("Extended Properties").value = "Excel 8.0;HDR=YES;"

oConnection.Name = "Connexion 1"

oConnection.ID = 1

oConnection.Reusable = True

oConnection.ConnectImmediate = False

oConnection.DataSource = "C:\Inetpub\wwwroot\upload\Maj.xls"

oConnection.ConnectionTimeout = 60

oConnection.UseTrustedConnection = False

oConnection.UseDSL = False

'If you have a password for this connection, please uncomment and add your password below.

'oConnection.Password = "<put the password here>"

goPackage.Connections.Add(oConnection)

oConnection = Nothing

'------------- a new connection defined below.

'For security purposes, the password is never scripted

oConnection = goPackage.Connections.New("SQLOLEDB")

oConnection.ConnectionProperties.Item("Integrated Security").Value = "SSPI"

oConnection.ConnectionProperties.Item("Persist Security Info").Value = True

oConnection.ConnectionProperties.Item("Initial Catalog").Value = "Bd"

oConnection.ConnectionProperties.Item("Data Source").Value = "SERVEUR"

oConnection.ConnectionProperties.Item("Application Name").Value = "Assistant Importation/exportation DTS (Data Transformation Services)"

oConnection.Name = "Connexion 2"

oConnection.ID = 2

oConnection.Reusable = True

oConnection.ConnectImmediate = False

oConnection.DataSource = "SERVEUR"

oConnection.ConnectionTimeout = 60

oConnection.Catalog = "exclus"

oConnection.UseTrustedConnection = True

oConnection.UseDSL = False

'If you have a password for this connection, please uncomment and add your password below.

'oConnection.Password = "<put the password here>"

goPackage.Connections.Add(oConnection)

oConnection = Nothing

'---------------------------------------------------------------------------

' create package steps information

'---------------------------------------------------------------------------

Dim oStep As DTS.Step2

Dim oPrecConstraint As DTS.PrecedenceConstraint

'------------- a new step defined below

oStep = goPackage.Steps.New

oStep.Name = "Copy Data from Feuil1$ to [Bd].[dbo].[Bd] étape"

oStep.Description = "Copy Data from Feuil1$ to [Bd].[dbo].[Bd] étape"

oStep.ExecutionStatus = 1

oStep.TaskName = "Copy Data from Feuil1$ to [Bd].[dbo].[Bd] Tâche"

oStep.CommitSuccess = False

oStep.RollbackFailure = False

oStep.ScriptLanguage = "VBScript"

oStep.AddGlobalVariables = True

oStep.RelativePriority = 3

oStep.CloseConnection = False

oStep.ExecuteInMainThread = True

oStep.IsPackageDSORowset = False

oStep.JoinTransactionIfPresent = False

oStep.DisableStep = False

oStep.FailPackageOnError = False

goPackage.Steps.Add(oStep)

oStep = Nothing

'---------------------------------------------------------------------------

' create package tasks information

'---------------------------------------------------------------------------

'------------- call Task_Sub1 for task Copy Data from Feuil1$ to [exclus].[dbo].[exclus] Tƒche (Copy Data from Feuil1$ to [exclus].[dbo].[exclus] Tƒche)

Call Task_Sub1(goPackage)

'---------------------------------------------------------------------------

' Save or execute package

'---------------------------------------------------------------------------

'goPackage.SaveToSQLServer "(local)", "sa", ""

goPackage.Execute()

tracePackageError(goPackage)

goPackage.Uninitialize()

'to save a package instead of executing it, comment out the executing package line above and uncomment the saving package line

goPackage = Nothing

goPackageOld = Nothing

End Sub

 

'-----------------------------------------------------------------------------

' error reporting using step.GetExecutionErrorInfo after execution

'-----------------------------------------------------------------------------

Public Sub tracePackageError(ByVal oPackage As DTS.Package)

Dim ErrorCode As Long

Dim ErrorSource As String

Dim ErrorDescription As String

Dim ErrorHelpFile As String

Dim ErrorHelpContext As Long

Dim ErrorIDofInterfaceWithError As String

Dim i As Integer

For i = 1 To oPackage.Steps.Count

If oPackage.Steps(i).ExecutionResult = DTSStepExecResult_Failure Then


''L'interface DTS Step ne peut être indexé !!!


oPackage.Steps(i).GetExecutionErrorInfo(ErrorCode, ErrorSource, ErrorDescription, _

ErrorHelpFile, ErrorHelpContext, ErrorIDofInterfaceWithError)

MsgBox(oPackage.Steps(i).Name & " failed" & vbCrLf & ErrorSource & vbCrLf & ErrorDescription)

End If

Next i

End Sub

'------------- define Task_Sub1 for task Copy Data from Feuil1$ to [exclus].[dbo].[exclus] Tƒche (Copy Data from Feuil1$ to [exclus].[dbo].[exclus] Tƒche)

Public Sub Task_Sub1(ByVal goPackage As Object)

Dim oTask As DTS.Task

Dim oLookup As DTS.Lookup

Dim oCustomTask1 As DTS.DataPumpTask2

oTask = goPackage.Tasks.New("DTSDataPumpTask")

'' un appel à un constructeur est valide uniquement en tant que ''première instruction dans un constructeur d'instance

oTask.Name =
"Copy Data from Feuil1$ to [Bd].[dbo].[Bd] Tâche"

oCustomTask1 = oTask.CustomTask

oCustomTask1.Name = "Copy Data from Feuil1$ to [Bd].[dbo].[Bd] Tâche"

oCustomTask1.Description = "Copy Data from Feuil1$ to [Bd].[dbo].[Bd] Tâche"

oCustomTask1.SourceConnectionID = 1

oCustomTask1.SourceSQLStatement = "select `nom`,`prenom`,`surnom`,`dn........ from `Feuil1$`"

oCustomTask1.DestinationConnectionID = 2

oCustomTask1.DestinationObjectName = "[exclus].[dbo].[exclus]"

oCustomTask1.ProgressRowCount = 1000

oCustomTask1.MaximumErrorCount = 0

oCustomTask1.FetchBufferSize = 1

oCustomTask1.UseFastLoad = True

oCustomTask1.InsertCommitSize = 0

oCustomTask1.ExceptionFileColumnDelimiter = "|"

oCustomTask1.ExceptionFileRowDelimiter = vbCrLf

oCustomTask1.AllowIdentityInserts = False

oCustomTask1.FirstRow = 0

oCustomTask1.LastRow = 0

oCustomTask1.FastLoadOptions = 2

oCustomTask1.ExceptionFileOptions = 1

oCustomTask1.DataPumpOptions = 0

Call oCustomTask1_Trans_Sub1(oCustomTask1)

 

goPackage.Tasks.Add(oTask)

oCustomTask1 = Nothing

oTask = Nothing

End Sub

Public Sub oCustomTask1_Trans_Sub1(ByVal oCustomTask1 As Object)

Dim oTransformation As DTS.Transformation2

Dim oTransProps As DTS.Properties

Dim oColumn As DTS.Column

oTransformation = oCustomTask1.Transformations.New("DTS.DataPumpTransformCopy")

'' un appel à un constructeur est valide uniquement en tant que ''première instruction dans un constructeur d'instance
oTransformation.Name =
"DirectCopyXform"

oTransformation.TransformFlags = 63

oTransformation.ForceSourceBlobsBuffered = 0

oTransformation.ForceBlobsInMemory = False

oTransformation.InMemoryBlobSize = 1048576

oTransformation.TransformPhases = 4

oColumn = oTransformation.SourceColumns.New("nom", 1)

Le reste il est Content !!!


jeudi 30 mars 2006 à 19:00:41 | Re : Lot DTS

Mindiell

''CODE QU'IL FAUT D'AILLEUR MODIFIER EN : oConnection.ConnectionProperties.item("Data Source").value = "C:\Inetpub\wwwroot\upload\Maj.xls" Euh, et un simple : Dim chemin chemin = le chemin que je veux & "\Maj.xls" oConnection.ConnectionProperties.item("Data Source").value = chemin Le reste je comprends pas... Mais pourquoi encore utiliser excel nondidiou ? quelle horreur !

vendredi 31 mars 2006 à 09:42:34 | Re : Lot DTS

io_ost

Membre Club
C'est ce que je veux faire (chemin=......) !!!!!

le fichier excel n'est pas le problème que cela soit lui un fichier texte ou autre chose j'ai toujours le même problème ::
passer en variable la source de mon lot DTS creer dans l'entreprise manager dans les Lots locaux dans le dossier Data Transformation Service

le code ci dessus est issus de l'enregistrement de ce lot en vb c'est une option à la fin de la création du lot je voulais gerer ce code mais j'ai toujours c'est erreur qui me bloque !!

un problème de compatibilité du vb de l'entreprise mananger et du vb.net de visual studio 20005

je crois que je vais plancher sur les serveur distant et faire la mise à jour via le net à partir de  mon serveur je désespère de gerer le code DTS

tu crois qu'il y a des admin sur ce site sur aspfr il sont beaucoup plus actifs enfin bref ...

si quelqu'un à une soluce aux secour!!!!! 

matt 

vendredi 31 mars 2006 à 09:53:20 | Re : Lot DTS

Mindiell

Il y a des admins partout mais le SQL est délaissé ;o) Je comprends pas bien le probleme, si tu pouvais l'expliquer etape par etape...

lundi 3 avril 2006 à 13:36:39 | Re : Lot DTS

io_ost

Membre Club
je veux faire une mise à jour de ma base donc j'ai creer un lot dts qui à pour source un fichier excel

mon problème c'est que le path du fichier source est en dur dans mon lot
 
donc quand je l'execute à partir d'internet explorer (depuis une page apsx) le lot dts vient chercher le fichier source dans le repetoire que je lui à définit mais pas sur le serveur !! aux même endoit mais sur le client!!
 
je me suis donc dis que je pouvais enregistrer mon lot en vb.bas (c'est une option à la fin de la création du lot dts dans entreprise manager) puis integrer tout le code de ce lot dans ma page aspx pour pouvoir passer en variable le path de ma source de mise à jour.

mais j'ai des erreur de vb dans le code de mon lot (qui est en vb6 ou moins) par rapport au vb.net

je posait dons cette question dans ce forum en esperant qu'il y avais des develloppeur de lot dts qui aurais eu la soluce



Cette discussion est classé dans : page, code, jour, lot, dts


Répondre à ce message

Sujets en rapport avec ce message

Lot dts SQL server dans un excel [ par karn ] Bonjour, j'ai creer un lot qui exporte une vue dans un fichier excel, ca marche bien, le seul probleme est que lorsque que je le relance au lieu de m' envoi mail si lot dts ok [ par xzonz ] Salut a tous et toutesvoici ma questionj'ai un lot dts qui exporte une table dans un fichier texteca fonctionnej'ai ensuite planifie le lot pour etre lot dts sqlserver avec parametres [ par xzonz ] Salut a toutes et tous je n'arrive pas a trouver comment faire ceci:j'ai dans une table des données relatives a une journéevoila ce que je dois faire: mise a jour dans une base de donnée [ par goueg83460 ] bonjour je voudrais faire une requete UPDATE sachant qu'elle va enregistrer un code d'accés dans une table reservation. Sachant que pour trouver ce co executer un lot dts selon des parametres [ par xzonz ] bonjour a toutes et tous  voila ce que j'aimerais fairej'ai un lot dts qui fait l'export d 'une table vers un fichier excel mais il peut arriver que l Comment recuperer la date du 1er jour de la semaine ?? [ par sosou80 ] Bonjour tous le monde ,Voila mon petit probléme : j'ai une table temporaire construite dans une procédure stockée comme suit:#tab_temp( Jour,Mois,Anné Trigger [ par frop01 ] Salut,J'ai une table Categorie (Code_cat, Libelle) et une autre table sous_categorie (code_scat, code_cat, libelle)Je voudrais créer un déclencheur qu un gran pb de redondance [ par mehdi911 ] Mehdi j ai table assid_emp code : code assid matricule :emp date_assid : date d absence exercice [ par roupis ] je suis un jeune débutant et j'ai besoin d'aide sur un exercicemerci de m'aider"un distributeur de produits pharmaceutiques homéopathiques souhaite in sql tri?!!! [ par abari ] salut tout le mondej'ai un probléme de tri?!!! dans ma table les enregistrement sont stockées d'une facon des ordonnées comme suit:code nom prénom


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.