Comment puis-je appeler un DTS à partir d'une application VB.net?Comment appeler un package DTS SQL Server 2000 dans VB.net
Répondre
Si vous faites référence à Data Transformation Service s qui fait partie de sql server 2000 (non disponible dans la version ultérieure car il a été remplacé par les services d'intégration), il existe plusieurs façons.
Vous pouvez l'exécuter à partir DTSRun si votre application est sur le serveur en utilisant Process.Start
process.start("dtsrun /S ""server name"" /U sa /N ""d:\task.dts""")
S'il est pas sur le serveur, vous pouvez toujours utiliser DTSRun mais à l'intérieur d'une procédure stockée qui vous appel à l'aide maître .dbo.xp_cmdshell, puis appelez le SP dans votre code. (Bien que si vous utilisez xp_cmdshell vous devez être conscient des risques de sécurité de l'ouverture).
Sinon, vous pouvez regarder cet article, il explique comment le faire à partir du script vb mais le code peut facilement être converti .:
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5164094.html
Ceci est un ensemble assez brut de classes qui devrait faire quoi vous voulez si vous voulez le contrôle programmatique sur un paquet DTS de VB.Net. Je ne donne aucune garantie sur son exactitude ou sa fiabilité, mais cela devrait vous donner assez de conseils pour commencer.
il suffit d'ajouter une référence à la bibliothèque d'objets DTSPackage (COM) à votre projet Visual Studio
Option Explicit On
Option Strict On
Importations DTS Importations System.Runtime.InteropServices
Test Namespace Classe publique DTSRunner Private cpPoint As ComTypes.IConnectionPoint Private cpContainer comme ComTypes.IConnectio nPointContainer intCookie privé As Integer PES privé en tant que PackageEventsSink
Public Sub RunPackage(ByVal packageName As String)
Dim pkg As New DTS.PackageClass
pkg.LoadFromSQLServer("MySQLServer", String.Empty, String.Empty, DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, String.Empty, String.Empty, String.Empty, PackageName, System.Reflection.Missing.Value)
cpContainer = CType(pkg, ComTypes.IConnectionPointContainer)
cpContainer.FindConnectionPoint(New Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5"), cpPoint)
PES = New PackageEventsSink
cpPoint.Advise(PES, intCookie)
AddHandler PES.OnPackageOnError, AddressOf PackageErroredHandler
AddHandler PES.OnPackageOnQueryCancel, AddressOf PackageQueryCancelHandler
pkg.Execute()
If cpPoint IsNot Nothing Then
cpPoint.Unadvise(intCookie)
End If
If Not pkg Is Nothing Then
pkg.UnInitialize()
End If
If PES IsNot Nothing Then
RemoveHandler PES.OnPackageOnError, AddressOf PackageErroredHandler
RemoveHandler PES.OnPackageOnQueryCancel, AddressOf PackageQueryCancelHandler
End If
PES = Nothing
cpContainer = Nothing
cpPoint = Nothing
pkg = Nothing
End Sub
Private Sub PackageErroredHandler(ByVal sender As Object, ByVal e As DTSEventArgs)
If Not packageErrored Then
TraceEvent(TraceEventType.Error, -1, _
"Error In DTS Package : {1} - {2} - {3} - {4}", _
.EventSource, e.ErrorCode, e.Source, e.Description)
packageErrored = True
End If
e.Cancel = False
End Sub
Private Sub PackageQueryCancelHandler(ByVal sender As Object, ByVal e As DTSEventArgs)
e.Cancel = False
End Sub
Private Class DTSEventArgs
Inherits EventArgs
Public EventSource As String
Public ErrorCode As Integer
Public Source As String
Public Description As String
Public Cancel As Boolean
Public PercentComplete As Integer = 0
Public Sub New(ByVal EventSource As String, ByVal Source As String, ByVal Description As String, ByVal ErrorCode As Integer, ByVal Cancel As Boolean)
Me.EventSource = EventSource
Me.Source = Source
Me.Description = Description
Me.ErrorCode = ErrorCode
Me.Cancel = Cancel
End Sub
End Class
Private Delegate Sub PackageOnErrorEventHandler(ByVal sender As Object, ByVal e As DTSEventArgs)
Private Delegate Sub PackageOnFinishEventHandler(ByVal sender As Object, ByVal e As DTSEventArgs)
Private Delegate Sub PackageOnStartEventHandler(ByVal sender As Object, ByVal e As DTSEventArgs)
Private Delegate Sub PackageOnProgressEventHandler(ByVal sender As Object, ByVal e As DTSEventArgs)
Private Delegate Sub PackageOnQueryCancelEventHandler(ByVal sender As Object, ByVal e As DTSEventArgs)
Private Class PackageEventsSink
Implements DTS.PackageEvents
Public Event OnPackageOnError As PackageOnErrorEventHandler
Public Event OnPackageOnFinish As PackageOnFinishEventHandler
Public Event OnPackageOnStart As PackageOnStartEventHandler
Public Event OnPackageOnProgress As PackageOnProgressEventHandler
Public Event OnPackageOnQueryCancel As PackageOnQueryCancelEventHandler
Overridable Overloads Sub OnError(ByVal EventSource As String, _
ByVal ErrorCode As Integer, ByVal Source As String, _
ByVal Description As String, ByVal HelpFile As String, _
ByVal HelpContext As Integer, ByVal IDofInterfaceWithError As String, _
ByRef pbCancel As Boolean) Implements DTS.PackageEvents.OnError
Dim e As New DTSEventArgs(EventSource, Source, Description, ErrorCode, pbCancel)
TraceEvent(TraceEventType.Verbose, 0, String.Format(" OnError in {0}; ErrorCode = {1}, Source = {2}, Description = {3}, HelpFile = {4}, HelpContext = {5}, IDofInterfaceWithError = {6}", EventSource, ErrorCode, Source, Description, HelpFile, HelpContext, IDofInterfaceWithError))
RaiseEvent OnPackageOnError(Me, e)
pbCancel = e.Cancel
End Sub
Overridable Overloads Sub OnFinish(ByVal EventSource As String) Implements DTS.PackageEvents.OnFinish
Dim e As New DTSEventArgs(EventSource, String.Empty, "Execution Finished", 0, False)
TraceEvent(TraceEventType.Verbose, 0, String.Format(" OnFinish in {0}", EventSource))
RaiseEvent OnPackageOnFinish(Me, e)
End Sub
Overridable Overloads Sub OnProgress(ByVal EventSource As String, _
ByVal ProgressDescription As String, ByVal PercentComplete As Integer, _
ByVal ProgressCountLow As Integer, ByVal ProgressCountHigh As Integer) _
Implements DTS.PackageEvents.OnProgress
Dim e As New DTSEventArgs(EventSource, String.Empty, ProgressDescription, 0, False)
e.PercentComplete = PercentComplete
TraceEvent(TraceEventType.Verbose, 0, String.Format(" OnProgress in {0}; ProgressDescription = {1}, PercentComplete = {2}, ProgressCountLow = {3}, ProgressCountHigh = {4}", EventSource, ProgressDescription, PercentComplete, ProgressCountLow, ProgressCountHigh))
RaiseEvent OnPackageOnProgress(Me, e)
End Sub
Overridable Overloads Sub OnQueryCancel(ByVal EventSource As String, ByRef pbCancel As Boolean) Implements DTS.PackageEvents.OnQueryCancel
Dim e As New DTSEventArgs(EventSource, String.Empty, String.Empty, 0, pbCancel)
TraceEvent(TraceEventType.Verbose, 0, String.Format(" OnQueryCancel in {0}; pbCancel = {1}", EventSource, pbCancel))
RaiseEvent OnPackageOnQueryCancel(Me, e)
pbCancel = e.Cancel
End Sub
Overridable Overloads Sub OnStart(ByVal EventSource As String) Implements DTS.PackageEvents.OnStart
Dim e As New DTSEventArgs(EventSource, String.Empty, "Execution Started", 0, False)
TraceEvent(TraceEventType.Verbose, 0, String.Format(" OnStart in {0}", EventSource))
RaiseEvent OnPackageOnStart(Me, e)
End Sub
End Class
#End Region
End Class
End Namespace
- 1. Erreur lors de l'exécution du package DTS: SQL Server 2000
- 2. SQL Server 2000 FTP
- 3. Échec du travail SQL Server 2000 à partir des versions du package DTS?
- 4. Est-ce que SQL Server 2000 MSDE a DTS?
- 5. Quelle est la meilleure façon d'exécuter un package DTS MS SQL Server 2000 à partir d'un déclencheur?
- 6. Comment combiner deux types de propriété dynamique dans SQL Server 2000 DTS?
- 7. SQL Server 2000 DTS - Impossible de résoudre le conflit de classement pour égal à l'opération
- 8. Puis-je exécuter un package DTS SQL Server à partir d'un script Python?
- 9. Erreurs SQL Server 2000 Server
- 10. Existe-t-il un moyen simple de copier le package DTS SQL Server 2000 et de le déployer sur un autre serveur?
- 11. Comment appeler une procédure stockée à partir d'une fonction définie par l'utilisateur Dans SQL Server 2000
- 12. Modification des options DTS (service de transformation de données) dans sql server 2000 via SQL Query Analyzer
- 13. Mise à niveau de SQL Server 2000 vers 2005 ou 2008 - DTS vers SSIS
- 14. Supprimer des packages DTS de SQL Server?
- 15. Synchronisation de SQL Server 2000 avec 2005 - DTS fonctionnera-t-il toujours?
- 16. Transposition Colonne dans SQL Server 2005/2000
- 17. Lucene.NET avec SQL SERVER 2000
- 18. Table Diff dans SQL Server 2000
- 19. Qu'est-ce que DTS/SSIS dans SQL Server?
- 20. SQL Server 2000 et System.Transactions.TransactionScope()
- 21. Comment appeler la procédure stockée MySQL à partir de SQL Server 2000?
- 22. Existe-t-il un audit DDL dans SQL Server 2000
- 23. Comment se connecter à une table dans SQL Server 2000?
- 24. Comment puis-je désactiver les connexions dans SQL Server 2000?
- 25. Comment tronquer les valeurs décimales dans SQL Server 2000
- 26. SQL Server 2008 réplication vers SQL Server 2000
- 27. SQL Server 2000> EXÉCUTER COMME
- 28. Comment amener un BLOB Oracle dans SQL Server?
- 29. Mise à niveau de SQL Server 2000 vers MySQL 5.1 en utilisant DTS - Comment résoudre le problème DateTime?
- 30. Emprunt d'identité pour sp_OA * sur SQL Server 2000
Qu'est-ce qu'un DTS? Pourriez-vous être plus verbeux? –
DTS = Service de transformation de données (utilisé dans SQL Server Enterprise Manager) – sef