如何在程序中调用DTS?

玉泽天成 2003-10-05 09:29:06
如题!
...全文
28 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
leimin 2003-10-06
  • 打赏
  • 举报
回复
'*********************************************************************
' DTS Simple Package
'
' This program demonstrates how to create a simple DTS Package
' that copies the results of a query against the authors table using
' Visual Basic. In order to run this program, you must create an
' ODBC DSN for SQL Server 8.0 called SQL8 and make 'PUBS' the default
' database. You must run the CreateTable.SQL script to create the
' AuthorName table.
'*********************************************************************

Option Explicit
Private Sub Form_Load()
Dim oPackage As New DTS.Package
Dim oConnection As DTS.Connection
Dim oTask As DTS.Task
Dim oStep As DTS.Step
Dim oTransform As DTS.Transformation
Dim oPumpTask As DTS.DataPumpTask
Dim oProps As DTS.Properties
Dim iStatus As Boolean
Dim i As Integer
Dim strODBCdsn As String
Dim strUserName As String
Dim strPassword As String


On Error GoTo PackageError:
'******************************************************************
' Define Package Properties
'******************************************************************
oPackage.Name = "DTS Simple Package"
oPackage.Description = "Example of a simple DTS package"
'******************************************************************
' Define The Source Connection
'******************************************************************
strODBCdsn = "SQL8" 'Create a DSN called SQL8 or change name
strUserName = "sa" 'User name assume same source and dest
strPassword = "" 'with the same Password
Set oConnection = oPackage.Connections.New("MSDASQL")
oConnection.ID = 1
oConnection.DataSource = strODBCdsn
oConnection.UserID = strUserName
oConnection.Password = strPassword
oPackage.Connections.Add oConnection
Set oConnection = Nothing
'******************************************************************
' Define The Destination Connection
'******************************************************************
Set oConnection = oPackage.Connections.New("MSDASQL")
oConnection.ID = 2
oConnection.DataSource = strODBCdsn
oConnection.UserID = strUserName
oConnection.Password = strPassword
oPackage.Connections.Add oConnection
Set oConnection = Nothing
'******************************************************************
' Create Pump Task
'******************************************************************
Set oTask = oPackage.Tasks.New("DTSDataPumpTask")
oTask.Name = "Task1"
Set oPumpTask = oTask.CustomTask
oPumpTask.SourceConnectionID = 1
oPumpTask.SourceSQLStatement = "Select au_lname, au_fname from pubs..authors"
oPumpTask.DestinationConnectionID = 2
oPumpTask.DestinationObjectName = "AuthorName"
'******************************************************************
' Simple Copy
'******************************************************************
Set oTransform = oPumpTask.Transformations.New("DTS.DataPumpTransformCopy")
oTransform.Name = "Transform"
oTransform.TransformFlags = DTSTransformFlag_AllowLosslessConversion
oPumpTask.Transformations.Add oTransform
oPackage.Tasks.Add oTask
Set oTask = Nothing
Set oStep = oPackage.Steps.New
oStep.Name = "Step1"
oStep.TaskName = "Task1"
oPackage.Steps.Add oStep
Set oStep = Nothing
'******************************************************************
' Execute the Package
'******************************************************************
oPackage.Execute
'******************************************************************
' Check for Errors
'******************************************************************
Dim sMsg As String
sMsg = sAccumStepErrors(oPackage)
MsgBox "'" & oPackage.Description & _
IIf(Len(sMsg) > 0, "' error:" & vbCrLf & sMsg, "' successful")
Set oPackage = Nothing
Unload Me
Exit Sub
'******************************************************************
' Package Error Handler
'******************************************************************
PackageError:
MsgBox "'" & oPackage.Description & "' error: " & sErrorNumConv(Err.Number) & _
vbCrLf & Err.Description & vbCrLf & sAccumStepErrors(oPackage)
Unload Me
Exit Sub
End Sub

Private Function sAccumStepErrors(ByVal oPackage As DTS.Package) As String
'accumulate step error info into error message
Dim oStep As DTS.Step
Dim sMessage As String
Dim lErrNum As Long
Dim sDescr As String
Dim sSource As String

'----- look for steps completed and failed
For Each oStep In oPackage.Steps
If oStep.ExecutionStatus = DTSStepExecStat_Completed Then
If oStep.ExecutionResult = DTSStepExecResult_Failure Then

'----- get step error info, append to message
oStep.GetExecutionErrorInfo lErrNum, sSource, sDescr
sMessage = sMessage & vbCrLf & _
"Step '" & oStep.Name & "' failed, error: " & _
sErrorNumConv(lErrNum) & vbCrLf & sDescr & vbCrLf
End If
End If
Next
sAccumStepErrors = sMessage
End Function

Private Function sErrorNumConv(ByVal lErrNum As Long) As String
'convert error number into readable forms, hex, and decimal for low word

If lErrNum < 65536 And lErrNum > -65536 Then
sErrorNumConv = "x" & Hex(lErrNum) & " = " & CStr(lErrNum)
Else
sErrorNumConv = "x" & Hex(lErrNum) & " = x" & _
Hex(lErrNum And -65536) & " + " & CStr(lErrNum And 65535)
End If
End Function

txlicenhe 2003-10-06
  • 打赏
  • 举报
回复
dtsrun
pengdali 2003-10-05
  • 打赏
  • 举报
回复
dtsrun /F"e:\web\wwwroot\sunhing\sqlserver\toolsdepart.dts" /Ntoolsdepart
dtsrun /F"e:\web\wwwroot\sunhing\sqlserver\toolsinfor.dts" /Ntoolsinfor

若要执行保存为 COM 结构化存储文件的 DTS 包,请使用:

dtsrun /Ffilename /Npackage_name /Mpackage_password

若要执行保存在 SQL Server msdb 数据库中的 DTS 包,请使用:

dtsrun /Sserver_name /Uuser_nName /Ppassword /Npackage_name /Mpackage_password

若要执行保存在 Meta Data Services 中的 DTS 包,请使用:

dtsrun /Sserver_name /Uuser_nrame /Ppassword /Npackage_name /Mpackage_password /Rrepository_name
pengdali 2003-10-05
  • 打赏
  • 举报
回复
dtsrun 实用工具
dtsrun 实用工具执行用数据转换服务 (DTS) 创建的包。DTS 包可存储在 Microsoft® SQL Server™ 2000 msdb 数据库、COM 结构化存储文件或 SQL Server Meta Data Services 中。

语法
dtsrun
[/?]|
[
[
/[~]S server_name[\instance_name]
{ {/[~]U user_name [/[~]P password]} | /E }
]
{
{/[~]N package_name }
| {/[~]G package_guid_string}
| {/[~]V package_version_guid_string}
}
[/[~]M package_password]
[/[~]F filename]
[/[~]R repository_database_name]
[/A global_variable_name:typeid=value]
[/L log_file_name]
[/W NT_event_log_completion_status]
[/Z] [/!X] [/!D] [/!Y] [/!C]
]

参数/?

显示命令提示选项。

~

指定接下来的参数采取十六进制文本表示加密的参数值。可以和 /S、/U、/P、/N、/G、/V、/M、/F 和 /R 选项一起使用。使用加密的值增加了用于执行 DTS 包的命令的安全性,因为服务器名称、密码等等都不可见。使用 /!Y 确定加密的命令。

/S server_name[\instance_name]

指定要连接到的 SQL Server 实例。指定用于连接到该服务器上的 SQL Server 默认实例的 server_name。指定用于连接到该服务器上的 SQL Server 2000 命名实例的 server_name\instance_name。

/U user_name

是用于连接到 SQL Server 实例的登录 ID。

/P password

是同登录 ID 一起使用的用户指定的密码。

/E

指定信任连接(不需密码)。

/N package_name

当创建 DTS 包时为包所指派的名称。

/G package_guid_string

当创建 DTS 包时指派给它的包 ID。该包 ID 是 GUID。

/V package_version_guid_string

当第一次保存或执行 DTS 包时指派给它的版本 ID。每次修改 DTS 包时都指派给它新的版本 ID。该版本 ID 是 GUID。

/M package_password

当创建 DTS 包时指派给它的可选密码。

/F filename

包含 DTS 包的结构化存储文件的名称。如果也指定了 server_name,则执行从 SQL Server 中检索到的 DTS 包并且将该包添加到结构化存储引擎。

/R repository_database_name

包含 DTS 包的知识库数据库名称。如果没有指定名称,则使用默认的数据库名称。

/A global_variable_name:typeid=value

指定一个包全局变量,其中 typeid = 全局变量数据类型的类型标识符。可以引用整个参数字符串。该参数可重复使用以指定多个全局变量。有关全局变量的各种可用类型标识符的信息,请参见注释部分。

若要使用该命令开关设置全局变量,必须有包的所有者权限或者该包必须已在未启用 DTS 密码保护的状态保存。如果没有所有者权限,可以指定全局变量,但是所用的值将是设置在包中的值,而不是那些用 /A 命令开关指定的值。

/L log_file_name:

指定包日志文件的名称。

/W Windows_Event_Log

指定是否在 Windows 应用程序日志中写入包执行的完成状态。指定 True 或 False。

/Z

指示使用 SQL Server 2000 加密对 dtsrun 命令行进行加密。

/!X

阻塞选定 DTS 包的执行。当想要无须执行包便能创建加密的命令行时,使用该命令参数。如果未指定此选项,则将立即执行 DTS 包。

/!D

从 SQL Server 实例中删除 DTS 包。将不执行此包。从结构化存储文件中删除特定的 DTS 包是不能实现的。需要使用 /F 和 /S 选项重写整个文件。

/!Y

显示用于执行 DTS 包的加密命令,但不执行该命令。

/!C

将用于执行 DTS 包的命令复制到 Microsoft Windows® 剪贴板上。此选项也可与 /!X 和 /!Y 一起使用。

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧