不藏私之一,在查询分析器中取得脚本
经常见大家问到在查询分析器里怎么查看某一表的脚本,但往往回答都有一点不尽人意。
因此特将我用的存储过程贴过来。也好和大家共同提高,
因为分不多,干脆就不给了最好在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
问题点数:0、回复次数:8Top
1 楼icevi(按钮工厂)回复于 2003-07-04 19:52:07 得分 0
嗯,也不错。Top
2 楼txlicenhe(马可)回复于 2003-07-17 19:48:47 得分 0
upTop
3 楼DJMPH(冷开水)回复于 2003-07-17 20:00:40 得分 0
不错,不过我习惯了右键生成。Top
4 楼zjcxc(邹建)回复于 2003-07-17 20:27:40 得分 0
不错Top
5 楼ejason(忏悔一生)回复于 2003-07-18 09:18:46 得分 0
执行出错!Top
6 楼dearmyfriend(Dearmyfriend)回复于 2003-07-18 09:52:18 得分 0
麻烦,直接在企业管理器中选中表,复制,然后在查询分析器中粘贴就出来了。Top
7 楼zclxyh(谁说我不在乎)回复于 2003-07-18 09:54:51 得分 0
使用sp_helptext 不是更快,更方便吗?Top
8 楼xlong0913(龙儿)回复于 2003-07-18 10:29:48 得分 0
麻烦Top




