不帅 发表于 2015-1-16 22:40:14

MSSQL网页设计在SQL Server 中利用SQLDMO

提供TCP/IP、ODBC和JDBC等多种数据库连接路径。server


曾多少时,同伴们为数据库的晋级伤透了头脑.常常程序的晋级赶不上数据库的晋级(版本把持的好,这大概不是甚么成绩,但关于很年夜一部分中国公司来讲这是没法制止的).而有些n久之前的数据库要利用新程序的时分,数据库的晋级几乎就是无从动手.以是对照数据库晋级的紧急性就渐渐的凸现出来.关于表和字段的晋级按事理来讲是不难的,经由过程sysobjects与syscolumns的对照很简单的能够找到分歧的地方,然后增添没有的工具便可.而关于视图和存储历程等非表工具的更新就有些难堪了(固然视图和存储历程假如用手工的举措是很复杂的).一个在于怎样天生工具剧本,另外一个在于怎样实行.人人都晓得syscomments表中躲有此类工具的剧本,人们一定会优先思索开采这个宝库.当站在字符型变量最年夜只能存储8000个字符时,这几乎就是一个不成超越的停滞.人们又想从导出文本剧本然后实行这个思绪动手时,又发明从字段中掏出的剧本有个自然的缺点:换行成绩.(最初发

现,这个成绩也是能够办理的).万般无法下人们把巴望的眼光会合到了SQLDMO上,她的身上总分发着无所事事的光泽.

当Transfer工具的美好身体展示在人们长远的时分,人人都对她的俊丽所服气——这不恰是我们所寻觅的吗?她的动听的地方就在于能够把一个数据库的工具剧本保留在内存中,然后毗连到另外一个数据库上实行.太棒了!如今我们来看看她的表面吧:

主要属性:

CopyAllDefaultsBoolean一切默许值

CopyAllObjectsBoolean一切工具

CopyAllRulesBoolean一切划定规矩

CopyAllStoredProceduresBoolean一切存储历程

CopyAllTablesBoolean一切表

CopyAllTriggersBoolean一切触发器

CopyAllUserDefinedDatatypesBoolean一切用户自界说范例

CopyAllViewsBoolean一切视图

CopyDataBoolean一切数据

DestDatabaseString方针工具数据库

DestLoginString方针数据库上岸用户名

DestPasswordString方针数据库上岸暗码

DestServerString方针服务器

DestUseTrustedConnectionBoolean用户信托毗连

DropDestObjectsFirstBoolean是不是先删除方针工具

IncludeDependenciesBoolean是不是包括依托工具

ScriptTypeBoolean剧本范例

主要办法:

AddObject增添工具

AddObjectByName经由过程工具称号增添工具

好了,人人应当对这个工具略有些懂得了.对SQLDMO熟习的人大概一会儿就能够从中失掉灵感,而初学者在这里生怕仍是一头雾水.不外毋须着急,详细用法我们会渐渐道来:

CREATEPROCEDUREP_UDB--以源数据库为模板晋级方针数据库

(@Source_DBsysname--原数据库

,@Des_DBsysname--方针数据库

,@UserNamesysname--用户名

,@pswsysname--暗码

)

AS

setnocounton

--/*部分变量声明

declare@ObjNamesysname

,@SrvIDint--服务器ID

,@DBsIdint--数据库集ID

,@transferIDint--传输ID

,@SDBIdint--源数据库ID

,@DDBIDint--方针数据库ID

,@SViewListIDint--源数据库视图列表

,@DViewListIDint--方针数据库视图列表

,@strNvarhar(4000)

,@namesysname

,@hrint--实行语句前往值

,@Errorint--毛病前往值(999:存储历程或触发器毛病;9999:视图毛病)

--*/

--/*创立sqldmo工具后面我们已说过SQLDMO是个com,在SQLServer中利用OLE--主动化工具必要用到sp_OACreate等一系列的存储历程,读者假如有不分明的能够自--己查阅相干材料

exec@hr=sp_oacreateSQLDMO.sqlserver,@SrvIDoutput

if@hr0

begin

set@Error=1

gotoPEnd

end

--*/

--/*毗连服务器

exec@hr=sp_oamethod@SrvID,connect,null,@@ServerName,@UserName,@psw

if@hr0

begin

set@Error=2

gotoPEnd

end

--*/

--/*取数据库集

exec@hr=sp_oagetproperty@SrvID,databases,@DBsIdoutput

--*/

--/*选择源数据库

exec@hr=sp_oamethod@DBsId,item,@SDBIdoutput,@Source_DB

if@hr0

begin

set@Error=3

gotoPEnd

end

--*/

--/*选择方针数据库

exec@hr=sp_oamethod@DBsId,item,@DDBIdoutput,@Des_DB

if@hr0

begin

set@Error=4

gotoPEnd

end

--*/

/*Tansfer属性设置(天生三年夜工具)

exec@hr=sp_oacreateSQLDMO.Transfer,@transferIDoutput

exec@hr=sp_oasetproperty@transferID,DestServer,@@ServerName

exec@hr=sp_oasetproperty@transferID,DestLogin,@UserName

exec@hr=sp_oasetproperty@transferID,DestPassword,@psw

exec@hr=sp_oasetproperty@transferID,DestDatabase,@des_DB

exec@hr=sp_oasetproperty@transferID,DropDestObjectsFirst,1

exec@hr=sp_oasetproperty@transferID,CopyAllStoredProcedures,1

exec@hr=sp_oasetproperty@transferID,CopyAllTriggers,1

exec@hr=sp_oasetproperty@transferID,CopyAllViews,1

--exec@hr=sp_oasetproperty@transferID,ScriptType,1这里人人能够尝尝这个属性

exec@hr=sp_oamethod@DDBId,Transfer,null,@transferID

execsp_OADestroy@TransferID

if@hr0

begin

set@Error=10

gotoPEnd

end

*/

PEnd:

exec@hr=sp_OAMethod@SrvID,DisConnect

execsp_OADestroy@SrvID

print(@Error)

Return(@Error)

GO

上边的存储历程只需是先容办法的完成,而详细的功效好比表及字段的对照天生这里就省略了.

实在有一个人人最初也没能办理好的成绩就是工具依附的成绩.很多工具好比视图里嵌视图,这时候天生与实行必要有按次的.固然有算法但出缺陷.但愿读者能能够供应好的算法.


优化的SQL查询算法,有效地提高查询速度

深爱那片海 发表于 2015-1-19 21:08:53

以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了

再现理想 发表于 2015-1-28 10:43:49

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

飘灵儿 发表于 2015-2-5 20:44:17

where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

灵魂腐蚀 发表于 2015-2-13 13:25:31

其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!

透明 发表于 2015-3-3 22:06:16

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

若相依 发表于 2015-3-11 14:13:50

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

变相怪杰 发表于 2015-3-18 19:11:19

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

仓酷云 发表于 2015-3-26 13:00:11

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
页: [1]
查看完整版本: MSSQL网页设计在SQL Server 中利用SQLDMO