/*在查詢分析器中呼叫sqldmo生成指令碼--儲存過程
鄒建 2003.07(引用請保留此資訊)--*/
/*--呼叫例項
declare @str varchar(8000)
exec sp_getscript 'zj','','','xzkh_sa','地區資料',@str output
print @str
*/if exists(select 1 from sysobjects where id=object_id('sp_getscript') and objectproperty(id,'isprocedure')=1)
drop procedure sp_getscript
gocreate procedure sp_getscript
@servername varchar(50) --伺服器名
,@userid varchar(50) --使用者名稱,如果為nt驗證方式,則為空
,@password varchar(50) --密碼
,@databasename varchar(50) --資料庫名稱
,@objectname varchar(250) --物件名
,@re varchar(8000) output --返回指令碼
asdeclare @srvid int,@dbsid int --定義伺服器、資料庫集id
declare @dbid int,@tbid int --資料庫、表id
declare @err int,@src varchar(255), @desc varchar(255) --錯誤處理變數
--建立sqldmo物件
exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
if @err<>0 goto lberr
--連線伺服器
if isnull(@userid,'')='' --如果是 nt驗證方式
begin
exec @err=sp_oasetproperty @srvid,'loginsecure',-1
if @err<>0 goto lberr
exec @err=sp_oamethod @srvid,'connect',null,@servername
endelse
exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password
if @err<>0 goto lberr
--獲取資料庫集
exec @err=sp_oagetproperty @srvid,'databases',@dbsid output
if @err<>0 goto lberr
--獲取要取得指令碼的資料庫id
exec @err=sp_oamethod @dbsid,'item',@dbid output,@databasename
if @err<>0 goto lberr
--獲取要取得指令碼的物件id
exec @err=sp_oamethod @dbid,'getobjectbyname',@tbid output,@objectname
if @err<>0 goto lberr
--取得指令碼
exec @err=sp_oamethod @tbid,'script',@re output
if @err<>0 goto lberr
--print @re
return
lberr:
exec sp_oageterrorinfo null, @src out, @desc out
declare @errb varbinary(4)
set @errb=cast(@err as varbinary(4))
exec master..xp_varbintohexstr @errb,@re out
select 錯誤號=@re, 錯誤源=@src, 錯誤描述=@desc
return
go
得到物件指令碼
在查詢分析器中呼叫sqldmo生成指令碼 儲存過程 鄒建 2003.07 引用請保留此資訊 呼叫例項 declare str varchar 8000 exec sp getscript zj xzkh sa 地區資料 str output print str if exists select 1 ...
得到物件指令碼
在查詢分析器中呼叫sqldmo生成指令碼 儲存過程 鄒建 2003.07 引用請保留此資訊 呼叫例項 declare str varchar 8000 exec sp getscript zj xzkh sa 地區資料 str output print str if exists select 1 ...
得到物件指令碼
在查詢分析器中呼叫sqldmo生成指令碼 儲存過程 鄒建 2003.07 引用請保留此資訊 呼叫例項 declare str varchar 8000 exec sp getscript zj xzkh sa 地區資料 str output print str if exists select 1 ...