最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

將mater庫(kù)中的系統(tǒng)存儲(chǔ)過(guò)程批量生成*.sql文件 通用且非常實(shí)用

 更新時(shí)間:2012年05月27日 22:15:22   作者:  
最近因?yàn)橄到y(tǒng)需要,需要將master庫(kù)的所有和業(yè)務(wù)相關(guān)的存儲(chǔ)過(guò)程批量生成 存儲(chǔ)過(guò)程名.sql 文件,默認(rèn)是不可以導(dǎo)出的
大家都知道系統(tǒng)存儲(chǔ)過(guò)程是無(wú)法用工具導(dǎo)出的(大家可以試試 >任務(wù)>生成SQL腳本)
因?yàn)橄到y(tǒng)存儲(chǔ)過(guò)程一般是不讓開(kāi)發(fā)人員修改的。

需要知識(shí):

1、xp_cmdshell命令的使用
2、sp_MS_marksystemobject 標(biāo)記系統(tǒng)存儲(chǔ)過(guò)程的方法
3、dos 命令,如 type,>> 等
4、bcp 命令的使用
復(fù)制代碼 代碼如下:

use master
go
if OBJECT_ID('pr_procToSql') is not null drop proc pr_procToSql
go
create proc pr_procToSql
(
@服務(wù)器名 varchar(100)
,@用戶名 varchar(100)
,@密碼 varchar(100)
,@path varchar(200)
,@database varchar(200)
,@sysproc int='0' --是否標(biāo)記為系統(tǒng)函數(shù) 1:是,0:否
,@proc_name varchar(100)='' --默認(rèn)是所有,可以模糊搜索
,@savetype varchar(200)='.sql' --默認(rèn)保存為sql腳本
)
as
/*
版本:v1
作者:達(dá)摩
日期:2012-04-13
功能:
1\將master庫(kù)的系統(tǒng)存儲(chǔ)過(guò)程批量生成文件(系統(tǒng)存儲(chǔ)過(guò)程無(wú)法自動(dòng)導(dǎo)出)
2\可以將所有類(lèi)型的存儲(chǔ)過(guò)程導(dǎo)出
3\可以標(biāo)記上系統(tǒng)存儲(chǔ)過(guò)程
調(diào)用:
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)+']個(gè)存儲(chǔ)過(guò)程'
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 '+@服務(wù)器名+' -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
--在最后面加上標(biāo)記為系統(tǒng)存儲(chǔ)過(guò)程
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 '標(biāo)記第['+cast(@id as varchar)+']個(gè)為系統(tǒng)存儲(chǔ)過(guò)程:'+@sp
end
set @s_add='del '+@path+@sp+CAST(@id as varchar)+@savetype
exec xp_cmdshell @s_add
print '生成第['+cast(@id as varchar)+']個(gè)存儲(chǔ)過(guò)程:'+@sp
delete from tempdb..#T where id=@id
set @id=@id+1
end

此存儲(chǔ)過(guò)程可以完善的功能
1、生成視圖
2、生成函數(shù)
3、生成指定庫(kù)的表結(jié)構(gòu)
4、生成指定庫(kù)的約束,用于批量生成升級(jí)腳本
5、用于生成數(shù)據(jù)庫(kù)中升級(jí)的腳本
歡迎大家?guī)臀蚁胂?,還有別的辦法嗎?希望加QQ282329611交流。

生成結(jié)果如圖:

相關(guān)文章

  • sql with as用法詳解

    sql with as用法詳解

    這篇文章詳細(xì)介紹了SQL中with as的用法,有需要的朋友可以參考一下
    2013-10-10
  • SQLServer 使用ADSI執(zhí)行分布式查詢ActiveDorectory對(duì)象

    SQLServer 使用ADSI執(zhí)行分布式查詢ActiveDorectory對(duì)象

    SQLServer 通過(guò)使用 ADSI 執(zhí)行分布式查詢ActiveDorectory對(duì)象的實(shí)現(xiàn)方法。
    2010-05-05
  • SqlServer數(shù)據(jù)庫(kù)遠(yuǎn)程連接案例教程

    SqlServer數(shù)據(jù)庫(kù)遠(yuǎn)程連接案例教程

    這篇文章主要介紹了SqlServer數(shù)據(jù)庫(kù)遠(yuǎn)程連接案例教程,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 淺談SQL中Partition的相關(guān)用法

    淺談SQL中Partition的相關(guān)用法

    本文主要介紹了淺談SQL中Partition的相關(guān)用法,使用Partition可以根據(jù)指定的列或表達(dá)式將數(shù)據(jù)分成多個(gè)分區(qū),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • SQLServer 批量插入數(shù)據(jù)的兩種方法

    SQLServer 批量插入數(shù)據(jù)的兩種方法

    在SQL Server 中插入一條數(shù)據(jù)使用Insert語(yǔ)句,但是如果想要批量插入一堆數(shù)據(jù)的話,循環(huán)使用Insert不僅效率低,而且會(huì)導(dǎo)致SQL一系統(tǒng)性能問(wèn)題。下面介紹SQL Server支持的兩種批量數(shù)據(jù)插入方法:Bulk和表值參數(shù)(Table-Valued Parameters)。
    2009-07-07
  • SQL Server實(shí)現(xiàn)將特定字符串拆分并進(jìn)行插入操作的方法

    SQL Server實(shí)現(xiàn)將特定字符串拆分并進(jìn)行插入操作的方法

    這篇文章主要介紹了SQL Server實(shí)現(xiàn)將特定字符串拆分并進(jìn)行插入操作的方法,涉及SQL Server的循環(huán)、遍歷、判定及插入等相關(guān)操作技巧,需要的朋友可以參考下
    2016-08-08
  • 最新評(píng)論

    阿巴嘎旗| 舒城县| 新源县| 周至县| 白山市| 青铜峡市| 绥中县| 漯河市| 肇庆市| 务川| 广平县| 黔南| 莆田市| 金寨县| 孙吴县| 紫云| 旬阳县| 息烽县| 东海县| 长子县| 林甸县| 广水市| 颍上县| 探索| 延川县| 陕西省| 莱芜市| 启东市| 东城区| 四平市| 桐乡市| 景德镇市| 麟游县| 秀山| 英山县| 洪雅县| 呼玛县| 松阳县| 德州市| 莱芜市| 沙河市|