得到物件指令碼

2021-04-16 14:48:12 字數 2060 閱讀 9590

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