Set quoted_identifier on
Go
SET ANSI_NULLS ON
Go
Alter procedure sp_script @Objectname varchar (50) asdeclare @DatabaseNamename varchar (50)
Set @DatabaseNamename = DB_NAME (DB_ID ())
Declare @str varchar (4000)
Declare @Object INTDECLARE @ObjectDatabase INTDECLARE @hr INTDECLARE @SRC VARCHAR (255), @Desc varchar (255) Declare @DatabaseCount Int, @current int, @Database INT
Declare @table int, @tables int
Exec @hr = sp_oacreate 'sqldmo.sqlser', @object outif @hr <> 0begin exec sp_oageterrorinfo @Object, @src out, @Desc out select hr = convert (varbinary (4), @ HR), Source = @ src, Description = @ Desc Returnend
Exec @hr = sp_oamethod @Object, 'connect', null, @@ servername, 'sa', ''
IF @hr <> 0begin exec sp_oageterrorinfo @Object Returnend
Exec @hr = sp_oagetproperty @Object, 'Databases', @objectDatabase Output
IF @hr <> 0begin exec sp_oageterrorinfo @ObjectDatabase, @src out, @Desc out select hr = convert (varbinary (4), @ HR), Source = @ src, description = @ Desc Returnend
EXEC @hr = sp_OAGetProperty @objectdatabase, 'count', @DataBaseCount outputIF @hr <> 0BEGIN EXEC sp_OAGetErrorInfo @objectdatabase, @src OUT, @desc OUT SELECT hr = convert (varbinary (4), @ hr), Source = @ src , Description = @ desc returnend
Set @current = 1LOOP1:
Exec @hr = sp_oamethod @ObjectDatabase, 'item', @Database output, @DatabaseNamename
IF @hr <> 0 begin exec sp_oageterrorinfo @ObjectDatabase return endexec @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 returnid
Print @str
Goset quoted_identifier off goset ANSI_NULLS ON Go