--用以下腳本,可以得到任意對象的創建時的腳本,網上好像也流傳有,但屬于自己的東西用著還是感覺舒坦.
--增加快捷鍵后,然后在查詢分析器中按相應的快捷鍵就能顯示對象的腳本.
set quoted_identifier on 
go
set ansi_nulls on 
go
 
 
alter    procedure sp_script
        @objectname varchar(50)
as
declare @databasename varchar(50)
set @databasename = db_name(db_id())
declare        @str varchar(4000)
declare @object int
declare @objectdatabase int
declare @hr int
declare @src varchar(255), @desc varchar(255)
declare @databasecount int, @current int, @database int
declare @table int, @tables int
exec @hr = sp_oacreate 'sqldmo.sqlserver', @object out
if @hr <> 0
begin
     exec sp_oageterrorinfo @object, @src out, @desc out 
   select hr=convert(varbinary(4),@hr), [email protected], description=[email protected]
    return
end
exec @hr = sp_oamethod @object, 'connect', null, @@servername,
    'sa', ''
if @hr <> 0
begin
   exec sp_oageterrorinfo @object
    return
end
exec @hr = sp_oagetproperty @object, 'databases', @objectdatabase output
if @hr <> 0
begin
   exec sp_oageterrorinfo @objectdatabase, @src out, @desc out 
   select hr=convert(varbinary(4),@hr), [email protected], [email protected]
    return
end
 
exec @hr = sp_oagetproperty @objectdatabase, 'count', @databasecount output
if @hr <> 0
begin
   exec sp_oageterrorinfo @objectdatabase, @src out, @desc out 
   select hr=convert(varbinary(4),@hr), [email protected], [email protected]
    return
end
set @current = 1
loop1:
  exec @hr = sp_oamethod @objectdatabase, 'item', @database output, @databasename
  if @hr <> 0
  begin
    exec sp_oageterrorinfo @objectdatabase
     return
  end
exec @hr = sp_oamethod @database, 'getobjectbyname', @table output, @objectname
  if @hr <> 0
  begin
    exec sp_oageterrorinfo @database
     return
  end
exec @hr = sp_oamethod @table, 'script', @str output, 5
  if @hr <> 0
  begin
    exec sp_oageterrorinfo @table
     return
  end
print @str
 
 
go
set quoted_identifier off 
go
set ansi_nulls on 
go