得到物件指令碼

2021-08-21 22:45:52 字數 2025 閱讀 7517

/*

在查詢分析器中呼叫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 strvarchar 8000 execsp getscript zj xzkh sa 地區資料 stroutput print str ifexists select1fromsysobjectswh...

得到物件指令碼

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

得到物件指令碼

在查詢分析器中呼叫sqldmo生成指令碼 儲存過程 鄒建 2003.07 引用請保留此資訊 呼叫例項 declare str varchar 8000 exec sp getscript zj xzkh sa 地區資料 str output print str if exists select 1 ...