首页 > 开发 > 综合 > 正文

得到对象脚本

2024-07-21 02:08:19
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。

  • /*
     在查询分析器中调用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 错误号[email protected], 错误源[email protected], 错误描述[email protected]
     return

    go

     
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表