不藏私之一,在查询分析器中取得脚本

qiubolecn 2003-07-04 07:20:39
经常见大家问到在查询分析器里怎么查看某一表的脚本,但往往回答都有一点不尽人意。
因此特将我用的存储过程贴过来。也好和大家共同提高,
因为分不多,干脆就不给了最好在MASTER里执行

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

create procedure sp_script
@objectname varchar(50)
as
/********************
修改日期:2002-09-10
修改人:qiubole
备注:取得脚本
********************/
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, 'byserver',
'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
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @table
RETURN
END

print @str


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


...全文
62 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlong0913 2003-07-18
  • 打赏
  • 举报
回复
麻烦
zclxyh 2003-07-18
  • 打赏
  • 举报
回复
使用sp_helptext 不是更快,更方便吗?
dearmyfriend 2003-07-18
  • 打赏
  • 举报
回复
麻烦,直接在企业管理器中选中表,复制,然后在查询分析器中粘贴就出来了。
铁歌 2003-07-18
  • 打赏
  • 举报
回复
执行出错!
zjcxc 元老 2003-07-17
  • 打赏
  • 举报
回复
不错
DJMPH 2003-07-17
  • 打赏
  • 举报
回复
不错,不过我习惯了右键生成。
txlicenhe 2003-07-17
  • 打赏
  • 举报
回复
up
icevi 2003-07-04
  • 打赏
  • 举报
回复
嗯,也不错。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧