亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

將mater庫中的系統存儲過程批量生成*.sql文件 通用且非常實用

2024-08-31 00:57:43
字體:
來源:轉載
供稿:網友
大家都知道系統存儲過程是無法用工具導出的(大家可以試試 >任務>生成SQL腳本)
因為系統存儲過程一般是不讓開發人員修改的。

需要知識:

1、xp_cmdshell命令的使用
2、sp_MS_marksystemobject 標記系統存儲過程的方法
3、dos 命令,如 type,>> 等
4、bcp 命令的使用

復制代碼 代碼如下:


use master
go
if OBJECT_ID('pr_procToSql') is not null drop proc pr_procToSql
go
create proc pr_procToSql
(
@服務器名 varchar(100)
,@用戶名 varchar(100)
,@密碼 varchar(100)
,@path varchar(200)
,@database varchar(200)
,@sysproc int='0' --是否標記為系統函數 1:是,0:否
,@proc_name varchar(100)='' --默認是所有,可以模糊搜索
,@savetype varchar(200)='.sql' --默認保存為sql腳本
)
as
/*
版本:v1
作者:達摩
日期:2012-04-13
功能:
1/將master庫的系統存儲過程批量生成文件(系統存儲過程無法自動導出)
2/可以將所有類型的存儲過程導出
3/可以標記上系統存儲過程
調用:
exec pr_procToSql '.','sa','H4ymH@$RTd','e:/tom/master/','master','1',‘'
exec pr_procToSql '.','sa','a123456','e:/sql/','agt_trad','','pr_','.sql'
*/
set nocount on
declare @sp nvarchar(500),@s nvarchar(2000),@row int,@id int,@s_add varchar(2000)
set @s=' use '+@database
exec(@s)
if object_id('tempdb..#t') is not null drop table tempdb..#t
create table tempdb..#t(name varchar(2000)
, id int IDENTITY(1,1) not null
)
exec('
insert into tempdb..#t(name)
select name
--into TEMPDB..#T
from '+@database+'..sysobjects where xtype=''p'' and name like '''+@proc_name+'%''
')
select @row=COUNT(*) from tempdb..#t
print '共生成['+cast(@row as varchar)+']個存儲過程'
set @id=1
while @row>=@id
begin
select top 1 @sp=name from tempdb..#T where id=@id
if OBJECT_ID('tempdb..test') is not null drop table tempdb..test
--增加use master go
set @s_add='echo use ['+@database+']>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo GO>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N''[dbo].['+@sp+']'') AND type in (N''P'', N''PC''))>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo DROP PROCEDURE [dbo].['+@sp+']>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo GO>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo SET ANSI_NULLS ON>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo GO>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo SET QUOTED_IDENTIFIER ON>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo GO>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
select @s='
select text into tempdb..test
from '+@database+'..syscomments
where id=OBJECT_ID('''+@database+'..'+@sp+''')
'
exec(@s)
--select * from tempdb..test
select @s='exec xp_cmdshell '+'''bcp tempdb..test out '+@path+@sp+cast(@id as varchar)+@savetype+' -c -S '+@服務器名+' -U '+@用戶名+' -P '+@密碼+''''
exec(@s)
--將前面加上use master 信息追加到 最前面
set @s_add='type '+@path+@sp+CAST(@id as varchar)+@savetype+'>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo GO>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
if @sysproc='1'
begin
--在最后面加上標記為系統存儲過程
set @s_add='echo exec sp_MS_marksystemobject ''['+@sp+']''>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
set @s_add='echo GO>>'+@path+@sp+@savetype
exec xp_cmdshell @s_add
print '標記第['+cast(@id as varchar)+']個為系統存儲過程:'+@sp
end
set @s_add='del '+@path+@sp+CAST(@id as varchar)+@savetype
exec xp_cmdshell @s_add
print '生成第['+cast(@id as varchar)+']個存儲過程:'+@sp
delete from tempdb..#T where id=@id
set @id=@id+1
end


此存儲過程可以完善的功能
1、生成視圖
2、生成函數
3、生成指定庫的表結構
4、生成指定庫的約束,用于批量生成升級腳本
5、用于生成數據庫中升級的腳本
歡迎大家幫我想想,還有別的辦法嗎?希望加QQ282329611交流。

生成結果如圖:

將mater庫中的系統存儲過程批量生成*.sql文件 通用且非常實用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美xxxwww| 欧美午夜片在线免费观看| 久久久极品av| 91国产精品电影| 国产日韩精品视频| 国产精品福利在线观看网址| 国产一区香蕉久久| 国产一区视频在线| 九九久久久久久久久激情| 两个人的视频www国产精品| 91在线视频九色| 中文字幕欧美亚洲| 亚洲精品视频久久| 18一19gay欧美视频网站| 国产精品极品美女粉嫩高清在线| 国产日韩在线观看av| 国产精品久久久久久超碰| 影音先锋欧美精品| 国产精品看片资源| 在线精品播放av| 欧美一区二区视频97| 亚洲欧美制服丝袜| 欧美尤物巨大精品爽| 97超级碰碰碰久久久| 8x海外华人永久免费日韩内陆视频| 国产精品偷伦视频免费观看国产| 亚洲精品有码在线| 国产精品v日韩精品| 欧美日韩成人黄色| 久久久国产成人精品| 日韩欧美在线一区| 亚洲精品小视频| 国产精品露脸av在线| 亚洲国产精品悠悠久久琪琪| 538国产精品视频一区二区| 国产91久久婷婷一区二区| 欧美精品福利视频| 国产精品久久久久久久久久尿| 亚洲黄页视频免费观看| 国产精品美女午夜av| 欧美极品美女视频网站在线观看免费| 精品福利在线视频| 国产精品久久久久久久久影视| 日韩一二三在线视频播| 国产成人精品视频在线观看| 另类美女黄大片| 色青青草原桃花久久综合| 欧美激情一区二区三区成人| 亚洲视频精品在线| 一区二区成人精品| 国产在线98福利播放视频| 日韩av电影在线播放| 欧洲成人免费视频| 亚洲欧美国产va在线影院| 成人免费午夜电影| 日本19禁啪啪免费观看www| 97在线观看视频国产| 中文字幕亚洲自拍| 精品久久久久久亚洲国产300| 人人澡人人澡人人看欧美| 九九热这里只有精品6| 热门国产精品亚洲第一区在线| 国产精品啪视频| 一区二区在线视频| 亚洲成人国产精品| 欧美成人免费视频| 久精品免费视频| 久久久久久九九九| 日韩综合视频在线观看| 欧洲亚洲妇女av| 影音先锋欧美精品| 国产精品成人国产乱一区| 亚洲伊人一本大道中文字幕| 亚洲精品国产美女| 中文字幕久久精品| 操91在线视频| 国产亚洲欧洲在线| 亚洲一区二区日本| 欧洲永久精品大片ww免费漫画| 精品国产依人香蕉在线精品| 国产成人精品在线播放| 亚洲综合大片69999| 久久亚洲精品国产亚洲老地址| 亚洲第一综合天堂另类专| 日韩欧美中文字幕在线播放| 国产亚洲日本欧美韩国| 国产日韩av高清| 91影院在线免费观看视频| 色综合视频网站| 国产精品女视频| 欧美做受高潮1| 日本乱人伦a精品| 在线看日韩欧美| 国产69久久精品成人看| 欧美日韩国产中文字幕| 欧美成人精品在线| 国产这里只有精品| 久久精品国产v日韩v亚洲| 欧美自拍大量在线观看| 欧美日韩在线观看视频小说| 亚洲国产古装精品网站| 日韩美女在线播放| 97av在线播放| 日本高清视频精品| 欧美第一黄网免费网站| 亚洲精品久久久久久久久久久久久| 色与欲影视天天看综合网| 精品无人区太爽高潮在线播放| 91精品久久久久久| 久久国产精品视频| 永久免费精品影视网站| 久久深夜福利免费观看| 成人午夜在线观看| 国产精品久久视频| 在线色欧美三级视频| 国产精品久久久久久久久借妻| 亚洲欧美日韩成人| 黑丝美女久久久| 日韩欧美在线网址| 久久综合伊人77777尤物| 性日韩欧美在线视频| 日韩精品在线视频美女| 亚洲国产日韩欧美综合久久| 久久九九国产精品怡红院| 色妞一区二区三区| 国产精品主播视频| 久久国产精品久久久久久久久久| 国产精品久久久久影院日本| 国产成人久久久精品一区| 北条麻妃久久精品| 国产成人亚洲精品| 美女av一区二区三区| 国产精品久久久久久久久借妻| 97免费视频在线播放| 精品视频在线导航| 中文字幕亚洲欧美日韩在线不卡| 亚洲国产精久久久久久| 日韩理论片久久| 91久久精品美女| 91亚洲一区精品| 北条麻妃在线一区二区| 国产丝袜视频一区| 97人洗澡人人免费公开视频碰碰碰| 1769国内精品视频在线播放| 热99久久精品| 欧美在线www| 亚洲国产中文字幕久久网| 日韩中文有码在线视频| 久久国产精品久久国产精品| 国产精品美女免费| 日韩国产中文字幕| 亚洲天堂久久av| 欧美电影免费观看大全| 成人午夜一级二级三级| 亚洲精品v天堂中文字幕| 欧美精品videofree1080p| 亚洲肉体裸体xxxx137| 国产欧美婷婷中文| 91沈先生在线观看| 性金发美女69hd大尺寸| 亚洲精品久久久久久下一站| 国产v综合ⅴ日韩v欧美大片| 91精品国产九九九久久久亚洲| 色七七影院综合|