将mater库中的系统存储过程批量生成*.sql文件 通用且非常实用
最近因为系统需要,需要将master库的所有和业务相关的存储过程批量生成 存储过程名.sql 文件,默认是不可以导出的
大家都知道系统存储过程是无法用工具导出的(大家可以试试 >任务>生成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交流。
生成结果如图:

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Titel: Schritte und Vorsichtsmaßnahmen für die Implementierung von Stapelaktualisierungen durch gespeicherte Oracle-Prozeduren. In Oracle-Datenbanken handelt es sich bei gespeicherten Prozeduren um eine Reihe von SQL-Anweisungen, die dazu dienen, die Datenbankleistung zu verbessern, Code wiederzuverwenden und die Sicherheit zu erhöhen. Gespeicherte Prozeduren können zum Aktualisieren von Daten in Stapeln verwendet werden. In diesem Artikel wird erläutert, wie gespeicherte Oracle-Prozeduren zum Implementieren von Batch-Updates verwendet werden, und es werden spezifische Codebeispiele bereitgestellt. Schritt 1: Erstellen Sie eine gespeicherte Prozedur. Zuerst müssen wir eine gespeicherte Prozedur erstellen, um Stapelaktualisierungsvorgänge zu implementieren. Im Folgenden erfahren Sie, wie Sie eine gespeicherte Prozedur erstellen

Zu den MySQL-Methoden zum Löschen gespeicherter Prozeduren gehören die Verwendung der DROP PROCEDURE-Anweisung, die Verwendung von MySQL Workbench und die Verwendung von Befehlszeilentools. Detaillierte Einführung: 1. Verwenden Sie die DROP PROCEDURE-Anweisung. Die Schritte bestehen darin, zuerst den MySQL-Client zu öffnen oder ein beliebiges Tool zu verwenden, das MySQL unterstützt, dann eine Verbindung zu Ihrer MySQL-Datenbank herzustellen und schließlich die folgende SQL-Anweisung auszuführen, um die gespeicherte Prozedur zu löschen. Verwenden Sie MySQL Workbench, um gespeicherte Prozeduren usw. zu löschen.

Gespeicherte Prozeduren in Oracle-Datenbanken sind eine bestimmte Art von gespeicherten Prozeduren, die zum Ausführen einer Reihe von SQL-Anweisungen und Datenoperationen in der Datenbank verwendet werden. Bei der tatsächlichen Datenbankentwicklung müssen wir manchmal feststellen, ob eine bestimmte Tabelle in der Datenbank vorhanden ist, damit wir im gespeicherten Prozess eine gewisse Beurteilung und logische Verarbeitung vornehmen können. Im Folgenden stellen wir vor, wie Sie die Methode zur Bestimmung, ob eine Tabelle in der Oracle-Datenbank vorhanden ist, implementieren und stellen spezifische Codebeispiele bereit. Erstens können wir die Systemtabelle user_tables oder all_t verwenden

Implementierungsprinzipien und Anwendungen gespeicherter Golang-Prozeduren Eine gespeicherte Prozedur ist ein vorkompiliertes Programm, das in einer relationalen Datenbank gespeichert ist und von einer Anwendung aufgerufen werden kann. Sie kann die Kosten für die Netzwerkübertragung von Daten effektiv senken und die Ausführungseffizienz der Datenbank verbessern. Obwohl Golang gespeicherte Prozeduren nicht direkt unterstützt, können Sie die Funktionen gespeicherter Prozeduren mithilfe von SQL-Anweisungen simulieren. In diesem Artikel werden die Prinzipien und Anwendungen der Implementierung gespeicherter Prozeduren in Golang vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Das Implementierungsprinzip der gespeicherten Golang-Prozedur ist in Gol

Strategien zur Leistungsoptimierung für Stapelaktualisierungen von gespeicherten Oracle-Prozeduren In Oracle-Datenbanken ist eine gespeicherte Prozedur ein Datenbankobjekt, das zum Verarbeiten von Datenlogik oder zum Ausführen bestimmter Aufgaben verwendet wird. Sie kann bestimmte Strategien zur Leistungsoptimierung bereitstellen, insbesondere bei der Aktualisierung von Daten in Stapeln. Das Aktualisieren von Daten in Stapeln erfordert normalerweise eine große Anzahl von Vorgängen auf Zeilenebene. Um die Leistung und Effizienz zu verbessern, können wir einige Strategien und Techniken anwenden, um die Leistung gespeicherter Prozeduren zu optimieren. Im Folgenden werden einige Strategien zur Leistungsoptimierung für Stapelaktualisierungen gespeicherter Oracle-Prozeduren vorgestellt und spezifische Codebeispiele bereitgestellt.

So schreiben Sie benutzerdefinierte gespeicherte Prozeduren und Funktionen in MySQL mit C#. Einführung: MySQL ist ein weit verbreitetes Open-Source-Datenbankverwaltungssystem, und C# ist eine häufig verwendete objektorientierte Programmiersprache. Während des Entwicklungsprozesses müssen wir häufig in Datenbanken gespeicherte Prozeduren und Funktionen verwenden, um die Wiederverwendbarkeit und Leistung des Codes zu verbessern. In diesem Artikel wird erläutert, wie Sie mit C# benutzerdefinierte gespeicherte Prozeduren und Funktionen in einer MySQL-Datenbank schreiben, und es werden spezifische Codebeispiele bereitgestellt. 1. Gespeicherte Prozeduren Eine gespeicherte Prozedur ist eine Reihe von SQL-Anweisungen, die bestimmte Aufgaben ausführen.

Titel: Detaillierter Vergleich und Vorteilsanalyse von gespeicherten Oracle-Prozeduren und -Funktionen. In Oracle-Datenbanken sind gespeicherte Prozeduren und Funktionen zwei wichtige Datenbankobjekte. Sie können zur Kapselung einer Reihe von SQL-Anweisungen und Logik verwendet werden, um die Effizienz und Komplexität von Daten zu verbessern Benutzerfreundlichkeit. In diesem Artikel werden die Eigenschaften der gespeicherten Oracle-Prozeduren und -Funktionen sowie ihre jeweiligen Vorteile im Detail verglichen und spezifische Codebeispiele bereitgestellt. Gespeicherte Prozedur Eine gespeicherte Prozedur ist eine Reihe von SQL-Anweisungen und PL/SQL-Codelogik, die vorab geschrieben und in der Datenbank gespeichert werden.

So schreiben Sie benutzerdefinierte Trigger und gespeicherte Prozeduren in MySQL mit PHP. Einführung: Bei der Entwicklung von Anwendungen müssen wir häufig einige Vorgänge auf Datenbankebene ausführen, z. B. das Einfügen, Aktualisieren oder Löschen von Daten. MySQL ist ein weit verbreitetes relationales Datenbankverwaltungssystem und PHP ist eine beliebte serverseitige Skriptsprache. In diesem Artikel wird erläutert, wie Sie mit PHP benutzerdefinierte Trigger und gespeicherte Prozeduren in MySQL schreiben, und es werden spezifische Codebeispiele bereitgestellt. 1. Was sind Trigger und gespeicherte Prozedur-Trigger (Trigg
