- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 |
1. 目标
MS SQL Server做大数据量传输的时候,我们大多会用到数据传输服务。现在假设,在开发环境下,我们已经设计好了DTS包并且运行良好,接下来我们要做的事情是迁移和部署这个DTS数据包。
所以,我们需要把设计环境下的DTS包保存成结构化的存储文件,并且这个文件导入到目标环境下的MS SQL Server中,最后添加作业,让MS SQL Server Angent在我们预期的事情执行这个DTS包完成数据传输工作。其中需要重点解决的一个问题是,在目标环境中,DTS传输的源和目的地会发生改变,需要对它进行配置。
2. 解决方案
2.1. DTSRun
DTSRun是微软提供的命令用于执行DTS包(包括结构化存储的、存储在SQL Server或存储在Meta Data Services的包)。
dtsrun的用法:
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]
]
具体的用法参看微软的资料。这里需要重点指出的是,通过“/A global_variable_name:typeid=value”选项,我们可以给DTS包传递多个自定义的参数,在DTS包部署的目标环境下,我们用这个选项告诉DTS包服务器名称、用户名、密码等数据库连接信息。通过“/!Y”选项可以获取加密后的DTSRun参数。
2.2. 重新设计DTS包
为了处理DTSRun传入的自定义参数,DTS包需要重新设计。我们可以增加一个ActiveX Script任务,在ActiveX Script任务中通过VB Script或者Java Script对DTS编程,并且定义流程,把ActiveX Script任务设置成最开始的一个任务。由于DTS COM对象线程模式与ActiveX Script任务宿主的不一致,需要将ActiveX Script任务工作流属性设置成在主包线程中执行,否则可能会出现调用错误。
下面的例子是ActiveX Script任务中的脚本。例子中的DTS包包含名称为"DBConnection"的数据库连接对象。
'************************************************************************
' Visual Basic ActiveX Script
'************************************************************************
Function Main()
Dim sDBDataSource
Dim sDBCatalog
Dim sDBUserID
Dim sDBPassword
Dim bDBUseTrusted
Dim sOLAPServer
Dim sOLAPCatalog
Dim oPackage
Dim oConnection
Dim oTask
Dim oCustomTask
' 获取DTSRun传入的自定义参数
sDBDataSource = DTSGlobalVariables("DBDataSource").Value
sDBCatalog = DTSGlobalVariables("DBCatalog").Value
sDBUserID = DTSGlobalVariables("DBUserID").Value
sDBPassword = DTSGlobalVariables("DBPassword").Value
bDBUseTrusted = DTSGlobalVariables("DBUseTrusted").Value
sOLAPServer = DTSGlobalVariables("OLAPServer").Value
sOLAPCatalog = DTSGlobalVariables("OLAPCatalog").Value
' 取得当前DTS包对象的技巧
Set oPackage = DTSGlobalVariables.Parent
' 取得包中的数据连接对象
Set oConnection = oPackage.Connections("DBConnection")
' 配置数据源对象的数据连接信息
If bDBUseTrusted Then
oConnection.UseTrustedConnection = bDBUseTrusted
Else
oConnection.UserID = sDBUserID
oConnection.Password = sDBPassword
End If
oConnection.DataSource = sDBDataSource
oConnection.Catalog = sDBCatalog
Set oConnection = nothing
' 配置跟多的信息,这里是OLAP分析服务处理任务
Set oTask = oPackage.Tasks("DTSTask_DTSOlapProcess.Certificate")
Set oCustomTask = oTask.CustomTask
Set oTask = nothing
oCustomTask.Properties("TreeKey").Value = sOLAPServer & "" _
& sOLAPCatalog & "CubeFolderCertificate"
Set oCustomTask = nothing
' 返回成功状态
Main = DTSTaskExecResult_Success
End Function
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |