--用以下腳本,可以得到任意對象的創建時的腳本,網上好像也流傳有,但屬于自己的東西用著還是感覺舒坦.
--增加快捷鍵后,然后在查詢分析器中按相應的快捷鍵就能顯示對象的腳本.
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