• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

得到对象脚本

发布: 2007-7-02 11:08 | 作者: admin | 来源: | 查看: 16次 | 进入软件测试论坛讨论

领测软件测试网
/*
 在查询分析器中调用sqldmo生成脚本--存储过程

邹建 2003.07-----------------*/

/*--调用实例
 declare @str varchar(8000)
 exec sp_getscript @#zj@#,@#@#,@#@#,@#xzkh_sa@#,@#地区资料@#,@str output
 print @str
*/
if exists(select 1 from sysobjects where id=object_id(@#sp_getscript@#) and objectproperty(id,@#IsProcedure@#)=1)
 drop procedure sp_getscript
go
create procedure sp_getscript
 @servername varchar(50)      --服务器名
 ,@userid varchar(50)       --用户名,如果为nt验证方式,则为空
 ,@password varchar(50)      --密码
 ,@databasename varchar(50)    --数据库名称
 ,@objectname varchar(250)     --对象名
 ,@re varchar(8000) output     --返回脚本
as
declare @srvid int,@dbsid int    --定义服务器、数据库集id
declare @dbid int,@tbid int     --数据库、表id
declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量

--创建sqldmo对象
exec @err=sp_oacreate @#sqldmo.sqlserver@#,@srvid output
if @err<>0 goto lberr

--连接服务器
if isnull(@userid,@#@#)=@#@# --如果是 Nt验证方式
begin
 exec @err=sp_oasetproperty @srvid,@#loginsecure@#,-1
 if @err<>0 goto lberr

 exec @err=sp_oamethod @srvid,@#connect@#,null,@servername
end
else
 exec @err=sp_oamethod @srvid,@#connect@#,null,@servername,@userid,@password

if @err<>0 goto lberr

--获取数据库集
exec @err=sp_oagetproperty @srvid,@#databases@#,@dbsid output
if @err<>0 goto lberr

--获取要取得脚本的数据库id
exec @err=sp_oamethod @dbsid,@#item@#,@dbid output,@databasename
if @err<>0 goto lberr

--获取要取得脚本的对象id
exec @err=sp_oamethod @dbid,@#getobjectbyname@#,@tbid output,@objectname
if @err<>0 goto lberr

--取得脚本
exec @err=sp_oamethod @tbid,@#script@#,@re output
if @err<>0 goto lberr

--print @re
return

lberr:
 exec sp_oageterrorinfo NULL, @src out, @desc out
 declare @errb varbinary(4)
 set @errb=cast(@err as varbinary(4))
 exec master..xp_varbintohexstr @errb,@re out
 select 错误号=@re, 错误源=@src, 错误描述=@desc
 return

go

 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网