/*
在查詢分析器中呼叫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 ...