use master
go if exists (select * from dbo.sysobjects where id = object_id(n '[dbo].[sp_copyproce] ') and
objectproperty(id, n 'isprocedure ') = 1)
drop procedure [dbo].[sp_copyproce]
go /*--生成表資料指令碼的通用儲存過程,
功能:將乙個資料庫中的儲存過程,複製到另一資料庫中
目標資料庫中已經有的儲存過程不覆蓋
2005.01(引用請保留此資訊)--*/
/*--呼叫示例
exec master.dbo.sp_copyproce 'a ', 'b '
--*/
create proc sp_copyproce
@s_dbname sysname, --要複製儲存過程的源資料庫名
@d_dbname sysname --目標資料庫名
as set nocount on
if db_id(@s_dbname) is null
begin
raiserror( '資料庫 "%s "不存在 ',1,16,@s_dbname)
return
end
if db_id(@d_dbname) is null
begin
raiserror( '資料庫 "%s "不存在 ',1,16,@d_dbname)
return
end
select @s_dbname= '[ '+replace(@s_dbname, '] ', ']] ')+ '] '
,@d_dbname= '[ '+replace(@d_dbname, '] ', ']] ')+ '] '
--複製儲存過程資訊到臨時表
create table #sys_syscomments_bak(name sysname,xtype char(2),number smallint,colid
smallint,status smallint,ctext varbinary(8000))
exec( '
insert #sys_syscomments_bak
(name,xtype,number,colid,status,ctext)
select o.name,o.xtype,c.number,c.colid,c.status,c.ctext
from '+@s_dbname+ '.dbo.syscomments c, '+@s_dbname+ '.dbo.sysobjects o
where c.id=o.id
and o.status> =0
and o.xtype= ' 'p ' '
and not exists(
select * from '+@d_dbname+ '.dbo.sysobjects where name=o.name)
') --建立儲存過程
declare tb cursor local for
select 'use '+@d_dbname+ ' exec( ' 'create proc dbo.[ '+replace(name,n '] ',n ']] ')+ '] as -- ' ')
exec sp_recompile [ '+replace(name,n '] ',n ']] ')+ '] '
from #sys_syscomments_bak
declare @s nvarchar(4000)
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb
--複製儲存過程結構
exec sp_configure 'allow updates ',1 reconfigure with override
begin tran
exec( '
delete c
from '+@d_dbname+ '.dbo.syscomments c, '+@d_dbname+ '.dbo.sysobjects
o,#sys_syscomments_bak ob
where c.id=o.id and o.name=ob.name and o.xtype=ob.xtype
insert '+@d_dbname+ '.dbo.syscomments([id],[number],[colid],[status],[ctext])
select o.[id],ob.[number],ob.[colid],ob.[status],ob.[ctext]
from '+@d_dbname+ '.dbo.sysobjects o,#sys_syscomments_bak ob
where o.name=ob.name and o.xtype=ob.xtype ')
commit tran
exec sp_configure 'allow updates ',0 reconfigure with override
go --使用測試
create database a
go use a
go create proc p_test1
as select 'test1 '
go create proc p_test2
as select 'test2 '
go create database b
go exec master.dbo.sp_copyproce 'a ', 'b '
go select * from b.dbo.sysobjects where xtype= 'p '
exec b.dbo.p_test1
exec b.dbo.p_test2
go use master
go drop database a,b
drop proc sp_copyproce
資料庫複製遷移 將公司遠端資料庫複製到本地
需求 將公司的遠端資料庫的複製到本地,方便在家加班工作時使用。先決條件 本地需要先安裝oracle資料庫,最好適合源資料庫版本保持一致。0.之前使用過很多方法,包括匯出ddl和資料,將生成的sql檔案在新的表中執行,但是都失敗了。sql語句有很多執行錯誤的,改了很多次也沒有成功。2.開啟sql de...
資料庫中儲存過程意義
建立了是拿來用的,至於為什麼要用儲存過程,要先了解儲存過程存在的意義 儲存過程由 sql語句 和流程控制 語句組成。它的功能包括 接受引數 呼叫另一過程 返回乙個狀態值給呼叫過程或批處理,指示呼叫成功或失敗 返回若干個引數值給呼叫過程或批處理,為呼叫者提供動態結果 在遠端sql server中執行等...
將postgers中資料庫表複製到不同的資料庫下面
將乙個資料庫下的 複製到另乙個資料庫下面,包括表中的所有資料 適用於表中資料量特別大的情況 此處以pg為例 參考文章 資料庫表匯出命令 命令 pg dump u postgres f geohash4 fang.sql t port geohash 4 postgres 說明 1 其中pg dump...