仓酷云
标题:
MSSQL网页编程之怎样在SQL Server存储过程当中实行DTS包
[打印本页]
作者:
山那边是海
时间:
2015-1-16 22:33
标题:
MSSQL网页编程之怎样在SQL Server存储过程当中实行DTS包
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用server|存储历程|实行数据转换服务(DTS)在数据库办理和开辟的多种范畴都有会触及DTS:数据堆栈-将数据从原始的处置体系和表格中提掏出来以供报表利用创建OLAP将大批数据从文本文件或别的非数据库格局的文件中拷贝到数据库天生MicrosoftOffice文档报表利用DistributedTransactionCoordinator(DTC)完成多半据库操纵在客户的桌面程序或网站上,常常必要同意用户按需实行DTS包。在这类情形下,在部署DTS包时,你应当决意将DTS包安装在那边,和经由过程何种手腕挪用它。你的选择要创建一个按需实行的DTS包,能够有多种选择。上面就对这些选择举行一一申明。SQLServerjob你能够在SQLServer里创建一个job,并挪用sp_start_job存储历程。利用sp_start_job的不敷的地方在于它是一个异步历程。因为它不克不及前往乐成或失利唆使,你必需强迫利用sp_help_job体系存储历程查询job的了局。除非不体贴job挪用后的了局,不然异步的job将使桌面程序或Web程序变得很庞大。一个job能够被设置成非办理员(sa)形式,但必要一些分外的步骤。在客户端桌面利用DTSDLLs第二种办法是用户电脑载进EnterpriseManager或DTSDLLs,在用户的电脑上挪用DTS包。固然用户电脑实行DTS包有必定可行性,但也有不敷:必需思索到晋级DTS包带来的分发和安装成绩。在服务器上利用sp_OA扩大存储历程第三种选择,也就是本文所先容的中心内容,就是利用sp_OA体系存储历程族并有企图的挪用DTS包。这类计划能够无效的制止上两种计划的坏处。利用VBScript挪用DTS包完成一个能够运转DTS包的存储历程的第一步是,编写一段VBScript代码。由于sp_OA存储历程利用起来有些贫苦,因而在使用sp_OA存储历程完成方针之前,要用VBScript编写你但愿完成的代码。一样平常偏向于利用VisualBasic举行复杂的剧本开辟事情。如图A所示,经由过程在项目援用窗口中到场DTS包工具库,就能够在剧本中援用DTS包工具了。图A:DTS工具库在代码中利用了LoadFromStorageFile函数。一样平常说,开辟事情应当在一个测试情况举行。懂得DTS格局的布局化,对将测试产物变成实践产物时很有匡助。Sp_OA完成写好了VBScript代码,便可用sp_OA扩大存储历程完成代码。和VBScript相似,sp_OA体系存储历程同意与工具库的COM+API举行交互。Sp_OACreate和在VB或VBScript中挪用的CreateObject函数相似。Sp_OAGetProperty、sp_OASetProperty和sp_OAMethod用来毗连工具库中的特征和函数。和VB或VBScript分歧的是,sp_OA存储历程招致的COM+毛病不会令SQL语句失利,因而必需手动反省每一个利用sp_OA的函数是不是事情一般。同时,良多sp_OA存储历程城市援用参数,因而必需在sp_OA存储过程当中的得当参数后到场OUTPUT语句。假如省略了OUTPUT语句,T-SQL也不会收回告诫信息。因而在运转时形态,固然存储历程运转一般但也不会前往准确值。列表B是一个具体的完成代码。办理计划中包含能够重定名DTS包的表格和完成的历程。个中sp_AdRunDTSPackageOnServer存储历程吸收一个ID参数。在持续实行前,程序会从T_AdDTSPackageSetup表中,查找抵达DTS包的SQLServer路径。平安性具体的平安性成绩不在本文的会商局限,这里要说的是一些必需思索到的基础成绩:在主数据库的sp_OA扩大体系存储过程当中,完成sp_AdRunDTSPackageOnServer存储历程必要EXECUTE权限。为了避免一些歹意用户经由过程sp_OA历程完成某种目标,能够针对使用程序修正SQLServer划定规矩,以增强平安性。T-SQL的CURRENT_USER函数对体系平安会有稍许匡助。利用CURRENT_USER和T_AdDTSPackageSetup表格中的地区,能够查询某个用户是不是被设为:利用给定的DTS包。DTS包在SQLServer上实行时,会遭到SQLServerAgent服务的帐户设置影响,假如从文件体系中读取ASCII文件,应当断定SQLServerAgent的帐户设置对该文件有经由过程允许。扩大典范可使用sp_OA体系存储历程与其他COM+库举行交互。同时在其他利用ODBC和ActiveX数据工具(ADO)的非SQLServer体系上,sp_OA也能够无效的挪用存储历程。一个仅10行摆布的VBScript剧本基本没有有用代价,而最初分解的T-SQL代码会变得十分冗杂。网上的SQLServer2000Books包含具体的COM+工具库的撑持申明,并包括了sp_OA体系存储历程的相干文档。当用户再必要按需运转DTS包时,无妨思索利用sp_OA体系存储历程来完成。mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。
作者:
金色的骷髅
时间:
2015-1-19 16:25
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
作者:
分手快乐
时间:
2015-1-28 08:28
而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
作者:
老尸
时间:
2015-2-5 20:11
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
作者:
冷月葬花魂
时间:
2015-2-13 11:47
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
作者:
蒙在股里
时间:
2015-3-3 20:54
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
作者:
飘灵儿
时间:
2015-3-11 13:40
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
作者:
愤怒的大鸟
时间:
2015-3-18 21:21
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
作者:
第二个灵魂
时间:
2015-3-26 17:57
也可谈一下你是怎么优化存储过程的?
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2