sql server 2000
请问如何将制定table的Trigger导出成text文件。
如:将数据库名为 BLMIS 中表名为 acc 和 eng_bom 的触发器分别导出到指定文件名的文本文件。谢!

解决方案 »

  1.   

    1,sp_helptext   '要取得脚本的触发器名 '
    2,数据库 右键 任务 生成脚本 下一步 生成触发器true 
      

  2.   

    --或者用sqldmo对象if   exists(select   1   from   sysobjects   where   id=object_id( 'fgetscript ')   and   objectproperty(id, 'IsInlineFunction ')=0)
    drop   function   fgetscript
    go/*--
    调用sqldmo生成脚本的函数--邹建   2003.07(引用请保留此信息)--*//*--调用实例
    print   dbo.fgetscript( 'zj ', ' ', ' ', 'xzkh_sa ', 'syscolumns ')/*--得到所有对象的脚本
    declare   @name   varchar(250)
    declare   #aa   cursor   for
    select   name   from   sysobjects   where   xtype   not   in( 'S ', 'PK ', 'D ', 'X ', 'L ')
    open   #aa
    fetch   next   from   #aa   into   @name
    while   @@fetch_status=0
    begin
    print   dbo.fgetscript( 'zj ', ' ', ' ', 'xzkh_sa ',@name)
    fetch   next   from   #aa   into   @name
    end
    close   #aa
    deallocate   #aa
    --*/
    --*/create   function   fgetscript(
    @servername   varchar(50) --服务器名
    ,@userid   varchar(50)= 'sa ' --用户名,如果为nt验证方式,则为空
    ,@password   varchar(50)= ' ' --密码
    ,@databasename   varchar(50) --数据库名称
    ,@objectname   varchar(250) --对象名)   returns   varchar(8000)
    as
    begin
    declare   @re   varchar(8000) --返回脚本
    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   lberrexec   @err=sp_oamethod   @srvid, 'connect ',null,@servername
    end
    else
    exec   @err=sp_oamethod   @srvid, 'connect ',null,@servername,@userid,@passwordif   @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(@re)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
    set   @re= '错误号:   '+@re
    +char(13)+ '错误源:   '+@src
    +char(13)+ '错误描述:   '+@desc
    return(@re)
    end
    go 
      

  3.   


    1、
    数据库 右键 任务 生成脚本 下一步 生成触发器。  2、查看系统表 sys.syscomments 
      

  4.   

    SqlServer数据库字典--主键.外键.约束.视图.函数.存储过程.触发器.sqlSELECT DISTINCT TOP 100 PERCENT o.xtype, CASE o.xtype WHEN 'X' THEN '扩展存储过程' WHEN 'TR' THEN '触发器' WHEN 'PK' THEN '主键' WHEN 'F' THEN '外键' WHEN 'C' THEN '约束' WHEN 'V' THEN '视图' WHEN 'FN' THEN '函数-标量' WHEN 'IF' THEN '函数-内嵌' WHEN 'TF' THEN '函数-表值' ELSE '存储过程' END AS 类型, o.name AS 对象名, o.crdate AS 创建时间, o.refdate AS 更改时间, c.text AS 声明语句 FROM dbo.sysobjects o LEFT OUTER JOIN dbo.syscomments c ON o.id = c.id WHERE (o.xtype IN ('X', 'TR', 'C', 'V', 'F', 'IF', 'TF', 'FN', 'P', 'PK')) AND (OBJECTPROPERTY(o.id, N'IsMSShipped') = 0) ORDER BY CASE o.xtype WHEN 'X' THEN '扩展存储过程' WHEN 'TR' THEN '触发器' WHEN 'PK' THEN '主键' WHEN 'F' THEN '外键' WHEN 'C' THEN '约束' WHEN 'V' THEN '视图' WHEN 'FN' THEN '函数-标量' WHEN 'IF' THEN '函数-内嵌' WHEN 'TF' THEN '函数-表值' ELSE '存储过程' END DESC