如何從VB.net應用程序調用DTS?如何在VB.net中調用SQL Server 2000 DTS包
0
A
回答
1
如果您指的是sql server 2000的一部分(由於它已被替換爲集成服務而在更高版本中不可用),那麼有幾種方法。
您可以從DTSRun如果你的應用程序中使用的Process.Start
process.start("dtsrun /S ""server name"" /U sa /N ""d:\task.dts""")
如果不是在服務器上你仍然可以使用DTSRun但在存儲過程中您調用使用主是在服務器上運行它.dbo.xp_cmdshell,然後在代碼中調用SP。 (雖然如果你使用xp_cmdshell,你必須意識到開放的安全風險)。
或者你可以看看這篇文章解釋瞭如何從VB腳本做,但代碼可以很容易地轉換:
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5164094.html
0
這是一個相當粗糙集,應該做的是什麼課你想如果你想從VB.Net的DTS包進行編程控制。我不能保證它的正確性或可靠性,但它應該給你足夠的指示來開始。
剛到DTSPackage對象(COM)庫的引用添加到您的Visual Studio項目
Option Explicit On
選項嚴格在
進口DTS 進口System.Runtime.InteropServices
命名空間測試 Public Class DTSRunner Private cpPoint As ComTypes.IConnectionPoint Private cpContainer As ComTypes.IConnectio nPointContainer 私人intCookie作爲整數 私人PES作爲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. DTS包,SQL Server 2000
- 2. 運行DTS包時出錯:SQL Server 2000
- 3. 在SQL 2000中打開.BAS DTS包?
- 4. SQL Server 2000 MSDE有DTS嗎?
- 5. 如何將SSIS包轉換爲SQL Server 2000 DTS包?
- 6. 無法打開導入到SQL Server 2008的SQL Server 2000 DTS包
- 7. sql server 2000 dts包在計劃時失敗
- 8. DTS包版本中的SQL Server 2000作業失敗?
- 9. Microsoft SQL Server 2000 DTS作爲文本
- 10. SQL Server 2000的DTS無效指針
- 11. SQL Server 2000腳本列出所有元數據服務DTS包
- 12. SQL Server 2000 FTP
- 13. 如何比較SQL Server 2005中的DTS
- 14. 從Sql Server 2005執行DTS包
- 15. SQL Server在哪裏存儲DTS包?
- 16. 如何使用SQL Server 2008在Windows上保存DTS包?
- 17. 在SQL Server 2000
- 18. 在SQL Server 2000中
- 19. SQL Server 2000和SQL Server 2008中的DTS(導出和導入)選項
- 20. 如何查詢SQL dts包
- 21. 如何從SQL Server 2000查詢Oracle表?
- 22. 使用DTS將SQL Server 2000升級到MySQL 5.1 - 如何解決DateTime問題?
- 23. 用於SQL 2000 DTS包的VB腳本ActiveX任務
- 24. 如何實現在TSQL(SQL Server 2000中)
- 25. SQL server-DTS包:最小權限
- 26. SQL Server 2000 - 調試死鎖
- 27. 通過SQL代理執行DTS 2000包時SSIS 2008失敗
- 28. SQL Server 2000 DTS包失敗「失敗的行數超過指定的最大值」
- 29. 從觸發器執行MS SQL Server 2000 DTS包的最佳方法是什麼?
- 30. 將SQL Server 2000升級到2005或2008 - 將DTS升級到SSIS
什麼是DTS?你可以更冗長嗎? – 2009-06-10 07:11:17