得到对象脚本

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

/*

在查询分析器中调用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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航