仓酷云

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

[学习教程] MYSQL编程:MS SQL Server2k数据转换服务部署

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

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

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

x
在我们工作的过程中,经常能听到很多不使用MySQL的理由,虽然其中有一些是对MySQL的误解,不过同样也有一些是合情合理的。1.方针www.yestar2000iTbulo.comWp3XQ  MSSQLServer做年夜数据量传输的时分,我们年夜多会用到数据传输服务。如今假定,在开辟情况下,我们已计划好了DTS包而且运转优秀,接上去我们要做的事变是迁徙和部署这个DTS数据包。www.yestar2000iTbulo.comWp3XQ
  以是,我们必要把计划情况下的DTS包保留成布局化的存储文件,而且这个文件导进到方针情况下的MSSQLServer中,最初增加功课,让MSSQLServerAngent在我们预期的事变实行这个DTS包完成数据传输事情。个中必要重点办理的一个成绩是,在方针情况中,DTS传输的源和目标地会产生改动,必要对它举行设置。www.yestar2000iTbulo.comWp3XQ
  2.办理计划www.yestar2000iTbulo.comWp3XQ
  2.1.DTSRunwww.yestar2000iTbulo.comWp3XQ
  DTSRun是微软供应的命令用于实行DTS包(包含布局化存储的、存储在SQLServer或存储在MetaDataServices的包)。www.yestar2000iTbulo.comWp3XQ
  dtsrun的用法:www.yestar2000iTbulo.comWp3XQ

  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]
  ]www.yestar2000iTbulo.comWp3XQ
  详细的用法参看微软的材料。这里必要重点指出的是,经由过程“/Aglobal_variable_name:typeid=value”选项,我们能够给DTS包传送多个自界说的参数,在DTS包部署的方针情况下,我们用这个选项告知DTS包服务器称号、用户名、暗码等数据库毗连信息。经由过程“/!Y”选项能够猎取加密后的DTSRun参数。www.yestar2000iTbulo.comWp3XQ








  2.2.从头计划DTS包www.yestar2000iTbulo.comWp3XQ
  为了处置DTSRun传进的自界说参数,DTS包必要从头计划。我们能够增添一个ActiveXScript义务,在ActiveXScript义务中经由过程VBScript大概JavaScript对DTS编程,而且界说流程,把ActiveXScript义务设置成最入手下手的一个义务。因为DTSCOM工具线程形式与ActiveXScript义务宿主的纷歧致,必要将ActiveXScript义务事情流属性设置成在主包线程中实行,不然大概会呈现挪用毛病。www.yestar2000iTbulo.comWp3XQ
  上面的例子是ActiveXScript义务中的剧本。例子中的DTS包包括称号为"DBConnection"的数据库毗连工具。www.yestar2000iTbulo.comWp3XQ

  ************************************************************************
  VisualBasicActiveXScript
  ************************************************************************  FunctionMain()
  DimsDBDataSource
  DimsDBCatalog
  DimsDBUserID
  DimsDBPassword
  DimbDBUseTrusted
  DimsOLAPServer
  DimsOLAPCatalog
  DimoPackage
  DimoConnection
  DimoTask
  DimoCustomTask
  
  猎取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包工具的技能
  SetoPackage=DTSGlobalVariables.Parent
  获得包中的数据毗连工具
  SetoConnection=oPackage.Connections("DBConnection")www.yestar2000iTbulo.comWp3XQ
  设置数据源工具的数据毗连信息
  IfbDBUseTrustedThen
  oConnection.UseTrustedConnection=bDBUseTrusted
  Else
  oConnection.UserID=sDBUserID
  oConnection.Password=sDBPassword
  EndIfwww.yestar2000iTbulo.comWp3XQ
www.yestar2000iTbulo.comWp3XQ







  oConnection.DataSource=sDBDataSource
  oConnection.Catalog=sDBCatalog
  SetoConnection=nothingwww.yestar2000iTbulo.comWp3XQ
  设置跟多的信息,这里是OLAP剖析服务处置义务
  SetoTask=oPackage.Tasks("DTSTask_DTSOlapProcess.Certificate")
  SetoCustomTask=oTask.CustomTask
  SetoTask=nothing
  oCustomTask.Properties("TreeKey").Value=sOLAPServer&""_
  &sOLAPCatalog&"CubeFolderCertificate"
  SetoCustomTask=nothing
  
  前往乐成形态
  Main=DTSTaskExecResult_Success
  EndFunctionwww.yestar2000iTbulo.comWp3XQ
www.yestar2000iTbulo.comWp3XQ
  2.3.保留为布局化的存储文件www.yestar2000iTbulo.comWp3XQ
  这个历程相称的复杂,经由过程企业办理器能够完成。另存为的布局化存储文件就是我们要分发的DTS包。www.yestar2000iTbulo.comWp3XQ
  2.4.导进到MSSQLServerwww.yestar2000iTbulo.comWp3XQ
  我们必要经由过程DTS编程来完成这个历程。必要夸大的是,上面这段示例必要在ApartmentState为STA线程中才能够准确的被挪用。www.yestar2000iTbulo.comWp3XQ

  publicvoidGo()
  {
  DTS.Package2Classpkg=newDTS.Package2Class();
  DTS.Applicationapp=newDTS.ApplicationClass();www.yestar2000iTbulo.comWp3XQ
  //从SQLSERVER中删除已存在的同名DTS包
  try
  {
  pkg.RemoveFromSQLServer(
  DBServer,
  DBSUserID,
  DBSPassword,
  DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_Default,
  "",www.yestar2000iTbulo.comWp3XQ
www.yestar2000iTbulo.comWp3XQ







  "",
  PkgName
  );
  }
  catch
  {
  }www.yestar2000iTbulo.comWp3XQ
  //获得待分发DTS包(布局化的存储文件)的包信息,这里假定包中只包括一个版本
  DTS.SavedPackageInfosinfos=pkg.GetSavedPackageInfos(UNCFile);
  DTS.SavedPackageInfoinfo=infos.Item(1);www.yestar2000iTbulo.comWp3XQ
  objectobj1=null;
  objectobj2=null;
  stringsPkgID=info.PackageID;
  stringsVerID=info.VersionID;
  stringsPkgName=info.PackageName;www.yestar2000iTbulo.comWp3XQ
  //载进布局化的存储文件
  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();www.yestar2000iTbulo.comWp3XQ
www.yestar2000iTbulo.comWp3XQ





www.yestar2000iTbulo.comWp3XQ

  //反省是不是保留乐成
  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();www.yestar2000iTbulo.comWp3XQ
  mPkgID=inf.PackageID;
  mVerID=inf.VersionID;
  }www.yestar2000iTbulo.comWp3XQ
www.yestar2000iTbulo.comWp3XQ
  2.5.增加功课www.yestar2000iTbulo.comWp3XQ
  增加功课能够用传统的体例,用SQL语句可做到,不做具体申明。MSSQLServer更是供应一系列的存储历程对功课举行修正,以到达用户预期的效果。www.yestar2000iTbulo.comWp3XQ
  3.小结www.yestar2000iTbulo.comWp3XQ
  文章到此已到达我们的方针。整体上说,2.2这步的完成有些坚苦,在完成历程傍边也碰着过良多坚苦,有一些是在旧事组中失掉的解答,别的的步骤检察MSDN都能够失掉对照简单的办理。www.yestar2000iTbulo.comWp3XQ





通过支付一定费用,客户可以得到优先的24/7支持,访问内容丰富的在线知识库和联系一个专门的技术负责经理。
admin 该用户已被删除
沙发
发表于 2015-1-19 11:47:55 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
深爱那片海 该用户已被删除
板凳
发表于 2015-1-25 19:48:02 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
只想知道 该用户已被删除
地板
发表于 2015-2-3 19:34:45 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
谁可相欹 该用户已被删除
5#
发表于 2015-2-9 04:47:00 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
精灵巫婆 该用户已被删除
6#
发表于 2015-2-26 23:43:20 | 只看该作者
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
飘灵儿 该用户已被删除
7#
发表于 2015-3-8 18:32:42 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
再现理想 该用户已被删除
8#
发表于 2015-3-16 10:51:20 | 只看该作者
无法深入到数据库系统层面去了解和探究
山那边是海 该用户已被删除
9#
发表于 2015-3-22 22:27:57 | 只看该作者
入门没那么困难,精通没那么容易
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 21:04

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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