在查询分析器中,通过SQLDMO来得到脚本

王朝mssql·作者佚名  2006-01-09
宽屏版  字体: |||超大  

--用以下脚本,可以得到任意对象的创建时的脚本,网上好像也流传有,但属于自己的东西用着还是感觉舒坦.

--增加快捷键后,然后在查询分析器中按相应的快捷键就能显示对象的脚本.

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), Source=@src, Description=@desc

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), Source=@src, Description=@desc

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), Source=@src, Description=@desc

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有