得到物件指令碼

2021-06-16 01:03:07 字數 1985 閱讀 4273

/*

在查詢分析器中呼叫sqldmo生成指令碼--儲存過程

鄒建2003.07-----------------*/

/*--呼叫例項

declare@strvarchar(8000)

execsp_getscript'zj','','','xzkh_sa','地區資料',@stroutput

print@str

*/ifexists(select1fromsysobjectswhereid=object_id('sp_getscript')andobjectproperty(id,'isprocedure')=1)

dropproceduresp_getscript

gocreateproceduresp_getscript

@servernamevarchar(50)      --伺服器名

,@useridvarchar(50)       --使用者名稱,如果為nt驗證方式,則為空

,@passwordvarchar(50)      --密碼

,@databasenamevarchar(50)    --名稱

,@objectnamevarchar(250)     --物件名

,@revarchar(8000)output     --返回指令碼

asdeclare@srvidint,@dbsidint    --定義伺服器、資料庫集id

declare@dbidint,@tbidint     --資料庫、表id

declare@errint,@srcvarchar(255),@descvarchar(255) --錯誤處理變數

--建立sqldmo物件

exec@err=sp_oacreate'sqldmo.sqlserver',@srvidoutput

if@err<>0gotolberr

--連線伺服器

ifisnull(@userid,'')=''--如果是nt驗證方式

begin

exec@err=sp_oasetproperty@srvid,'loginsecure',-1

if@err<>0gotolberr

exec@err=sp_oamethod@srvid,'connect',null,@servername

endelse

exec@err=sp_oamethod@srvid,'connect',null,@servername,@userid,@password

if@err<>0gotolberr

--獲取資料庫集

exec@err=sp_oagetproperty@srvid,'databases',@dbsidoutput

if@err<>0gotolberr

--獲取要取得指令碼的資料庫id

exec@err=sp_oamethod@dbsid,'item',@dbidoutput,@databasename

if@err<>0gotolberr

--獲取要取得指令碼的物件id

exec@err=sp_oamethod@dbid,'getobjectbyname',@tbidoutput,@objectname

if@err<>0gotolberr

--取得指令碼

exec@err=sp_oamethod@tbid,'script',@reoutput

if@err<>0gotolberr

--print@re

return

lberr:

execsp_oageterrorinfonull,@srcout,@descout

declare@errbvarbinary(4)

set@errb=cast(@errasvarbinary(4))

execmaster..xp_varbintohexstr@errb,@reout

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 ...