仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 918|回复: 9
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之MS SQL Server 2000数据转换服务部署

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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中包含了插入/删除的记录的所有字段的值(太爽了。。)
山那边是海 该用户已被删除
沙发
发表于 2015-1-19 07:21:53 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
小女巫 该用户已被删除
板凳
发表于 2015-1-24 19:16:28 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
柔情似水 该用户已被删除
地板
发表于 2015-2-2 12:45:06 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
海妖 该用户已被删除
5#
发表于 2015-2-7 20:23:47 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
第二个灵魂 该用户已被删除
6#
发表于 2015-2-23 10:28:34 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
金色的骷髅 该用户已被删除
7#
发表于 2015-2-23 10:28:34 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-7 08:11:41 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
不帅 该用户已被删除
9#
发表于 2015-3-14 16:15:15 | 只看该作者
无法深入到数据库系统层面去了解和探究
小妖女 该用户已被删除
10#
发表于 2015-3-21 13:08:22 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 18:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表