|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Archive非常适合存储大量的独立的,作为历史记录的数据。因为它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差server|数据|转换
1.方针
MSSQLServer做年夜数据量传输的时分,我们年夜多会用到数据传输服务。如今假定,在开辟情况下,我们已计划好了DTS包而且运转优秀,接上去我们要做的事变是迁徙和部署这个DTS数据包。以是,我们必要把计划情况下的DTS包保留成布局化的存储文件,而且这个文件导进到方针情况下的MSSQLServer中,最初增加功课,让MSSQLServerAngent在我们预期的事变实行这个DTS包完成数据传输事情。个中必要重点办理的一个成绩是,在方针情况中,DTS传输的源和目标地会产生改动,必要对它举行设置。
2.办理计划
2.1.DTSRun
DTSRun是微软供应的命令用于实行DTS包(包含布局化存储的、存储在SQLServer或存储在MetaDataServices的包)。
dtsrun的用法:
dtsrun
[/?]|
[
[
/[~]Sserver_name[instance_name]
{{/[~]Uuser_name[/[~]Ppassword]}|/E}
]
{
{/[~]Npackage_name}
|{/[~]Gpackage_guid_string}
|{/[~]Vpackage_version_guid_string}
}
[/[~]Mpackage_password]
[/[~]Ffilename]
[/[~]Rrepository_database_name]
[/Aglobal_variable_name:typeid=value]
[/Llog_file_name]
[/WNT_event_log_completion_status]
[/Z][/!X][/!D][/!Y][/!C]
]
详细的用法参看微软的材料。这里必要重点指出的是,经由过程“/Aglobal_variable_name:typeid=value”选项,我们能够给DTS包传送多个自界说的参数,在DTS包部署的方针情况下,我们用这个选项告知DTS包服务器称号、用户名、暗码等数据库毗连信息。经由过程“/!Y”选项能够猎取加密后的DTSRun参数。
2.2.从头计划DTS包
为了处置DTSRun传进的自界说参数,DTS包必要从头计划。我们能够增添一个ActiveXScript义务,在ActiveXScript义务中经由过程VBScript大概JavaScript对DTS编程,而且界说流程,把ActiveXScript义务设置成最入手下手的一个义务。因为DTSCOM工具线程形式与ActiveXScript义务宿主的纷歧致,必要将ActiveXScript义务事情流属性设置成在主包线程中实行,不然大概会呈现挪用毛病。
上面的例子是ActiveXScript义务中的剧本。例子中的DTS包包括称号为"DBConnection"的数据库毗连工具。
************************************************************************VisualBasicActiveXScript************************************************************************FunctionMain()DimsDBDataSourceDimsDBCatalogDimsDBUserIDDimsDBPasswordDimbDBUseTrustedDimsOLAPServerDimsOLAPCatalogDimoPackageDimoConnectionDimoTaskDimoCustomTask猎取DTSRun传进的自界说参数sDBDataSource=DTSGlobalVariables("DBDataSource").ValuesDBCatalog=DTSGlobalVariables("DBCatalog").ValuesDBUserID=DTSGlobalVariables("DBUserID").ValuesDBPassword=DTSGlobalVariables("DBPassword").ValuebDBUseTrusted=DTSGlobalVariables("DBUseTrusted").ValuesOLAPServer=DTSGlobalVariables("OLAPServer").ValuesOLAPCatalog=DTSGlobalVariables("OLAPCatalog").Value获得以后DTS包工具的技能SetoPackage=DTSGlobalVariables.Parent获得包中的数据毗连工具SetoConnection=oPackage.Connections("DBConnection")设置数据源工具的数据毗连信息IfbDBUseTrustedThenoConnection.UseTrustedConnection=bDBUseTrustedElseoConnection.UserID=sDBUserIDoConnection.Password=sDBPasswordEndIfoConnection.DataSource=sDBDataSourceoConnection.Catalog=sDBCatalogSetoConnection=nothing设置跟多的信息,这里是OLAP剖析服务处置义务SetoTask=oPackage.Tasks("DTSTask_DTSOlapProcess.Certificate")SetoCustomTask=oTask.CustomTaskSetoTask=nothingoCustomTask.Properties("TreeKey").Value=sOLAPServer&""_&sOLAPCatalog&"CubeFolderCertificate"SetoCustomTask=nothing前往乐成形态Main=DTSTaskExecResult_SuccessEndFunction
2.3.保留为布局化的存储文件
这个历程相称的复杂,经由过程企业办理器能够完成。另存为的布局化存储文件就是我们要分发的DTS包。
2.4.导进到MSSQLServer
我们必要经由过程DTS编程来完成这个历程。必要夸大的是,上面这段示例必要在ApartmentState为STA线程中才能够准确的被挪用。
publicvoidGo(){DTS.Package2Classpkg=newDTS.Package2Class();DTS.Applicationapp=newDTS.ApplicationClass();//从SQLSERVER中删除已存在的同名DTS包try{pkg.RemoveFromSQLServer(DBServer,DBSUserID,DBSPassword,DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default,"","",PkgName);}catch{}//获得待分发DTS包(布局化的存储文件)的包信息,这里假定包中只包括一个版本DTS.SavedPackageInfosinfos=pkg.GetSavedPackageInfos(UNCFile);DTS.SavedPackageInfoinfo=infos.Item(1);objectobj1=null;objectobj2=null;stringsPkgID=info.PackageID;stringsVerID=info.VersionID;stringsPkgName=info.PackageName;//载进布局化的存储文件pkg.LoadFromStorageFile(UNCFile,PkgPwd,sPkgID,sVerID,sPkgName,refobj1);//保留到SQLServer中pkg.SaveToSQLServerAs(PkgName,DBServer,DBSUserID,DBSPassword,DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default,PkgOwnerPwd,PkgOperatorPwd,"",refobj2,false);pkg.UnInitialize();//反省是不是保留乐成DTS.PackageSQLServerpkgSQLServer=app.GetPackageSQLServer(DBServer,DBSUserID,DBSPassword,DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default);DTS.PackageInfosinfs=pkgSQLServer.EnumPackageInfos(PkgName,true,"");if(infs.EOF)thrownewException("DTS包导进到数据库失利。");DTS.PackageInfoinf=infs.Next();mPkgID=inf.PackageID;mVerID=inf.VersionID;}
2.5.增加功课
增加功课能够用传统的体例,用SQL语句可做到,不做具体申明。MSSQLServer更是供应一系列的存储历程对功课举行修正,以到达用户预期的效果。
3.小结
文章到此已到达我们的方针。整体上说,2.2这步的完成有些坚苦,在完成历程傍边也碰着过良多坚苦,有一些是在旧事组中失掉的解答,别的的步骤检察MSDN都能够失掉对照简单的办理。
对于insert和delete,event中包含了插入/删除的记录的所有字段的值(太爽了。。) |
|