关于sql sever 的系统存储过程

sql sever中提供有两类系统存储过程,一类是以sp_开头的,另一类是以xp_开头的,请高手说明,这两类系统存储过程都是干什么的,区别是什么,不用具体到某个存储过程,只需说明两个类别的区别即可。

存储过程分为三类:
系统存储过程:(System stored Procedure)sp_开头,为SQLSERVER内置存储过程。
扩展存储过程:(Extended stored Procedure),也就是外挂程序,用于扩展SQLSERVER的功能,以sp_或者xp_开头,以DLL的形式单独存在。

(系统存储过程和扩展存储过程都是在master数据库中。sp_开头的可是全局的,任何一个数据库都可以直接调用的。)
系统存储过程主要分为以下几类:

目录存储过程,例如:
sp_columns 返回当前环境中可查询的指定表或视图的列信息。
sp_tables 返回当前环境下可查询的对象的列表(任何可出现在 FROM 子句中的对象)。
sp_stored_procedures 返回当前环境中的存储过程列表。

复制类存储过程,例如:
sp_addarticle 创建项目并将其添加到发布中。此存储过程在发布服务器的发布数据库上执行。

安全管理类存储过程,例如:
sp_addrole 在当前数据库创建新的 Microsoft�0�3 SQL Server�6�4 角色。
sp_password 添加或更改 Microsoft�0�3 SQL Server�6�4 登录的密码。

分布式查询存储过程,例如:
sp_foreignkeys 返回引用主键的外键,这些主键在链接服务器中的表上。
sp_primarykeys 返回指定远程表的主键列,每个键列占一行。

扩展存储过程:
xp_sendmail 向指定的收件人发送邮件和查询结果集附件。
xp_startmail 启动 SQL 邮件客户端会话。
xp_cmdshell 以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。授予非管理用户执行xp_cmdshell 的权限。

用户定义的存储过程:(User-defined stored Procedure),这个就是用户在具体的数据库中自己定义的,名字最好不要以sp_和xp_开头,防止混乱。

注意事项:
1.在存储过程中,有些建立对象的语句是不可使用的:create default,create trigger,create procedure,create view,create rule.
2.在同一数据库中,不同的所有者可以建立相同名称的对象名。例如:a.sample,b.sample,c.sample三个数据表可以同时存在。如果存储过程中未指明对象的所有者(例如存储过程中的语句select * from sample,这句中的sample没有指明所有者),在执行的过程中默认的所有者查找顺序是:相应的存储过程的建立者->相应数据库的所有者。如果这个查找过程中没有把所有者确定下来,系统就要报错。
(这里我额外插一句:如果需要严密的数据操作,在任何操作中尽量加上所有者,例如leijun.sample)
3.在存储过程名称前边添加#或者##,所建立的存储过程则是“临时存储过程“(#是局部临时存储过程,##是全局临时存储过程)。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-23
补充一下:许多管理和信息活动可以通过系统存储过程执行。系统存储过程按这些分类分组
sp开头的一般是Active Directory 过程、目录过程、游标过程、数据库维护计划过程、分布式查询过程、全文检索过程、日志传送过程、OLE 自动化扩展存储过程、复制过程、安全过程、SQL 事件探查器过程、SQL Server 代理程序过程、系统过程、Web 助手过程、XML 过程
xp开头的是常规扩展过程、SQL Server 代理程序过程本回答被网友采纳
第2个回答  2013-06-23
简单的小例子CREATE PROCEDURE testPro
AS
/**//* 事务开始 */
BEGIN TRANSACTION tran_test

/**//* 保存事务 */
SAVE TRANSACTION tran_test

/**//*数据操作 */
INSERT [table1] ( [content] ) VALUES ( '43332' )

/**//*提交事务 */
COMMIT TRANSACTION tran_test

/**//*判断是否有错误 */
IF ( @@ERROR <> 0 )
BEGIN
/**//*自定义错误输出
RAISERROR( 'Insert data error!',16,1 )
/**//* 事务回滚 */
ROLLBACK TRANSACTION tran_test
END

/**//* 判断事务数是否大于0 */
IF ( @@TRANCOUNT > 0 )
BEGIN
/**//* 事务回滚 */
ROLLBACK TRANSACTION tran_test
END
GO

关于sql sever 的系统存储过程
复制类存储过程,例如:sp_addarticle 创建项目并将其添加到发布中。此存储过程在发布服务器的发布数据库上执行。安全管理类存储过程,例如:sp_addrole 在当前数据库创建新的 Microsoft�0�3 SQL Server�6�4 角色。sp_password 添加或更改 Microsoft�0&#x...

在SQL Server中,用来显示数据库信息的系统存储过程是什么?具体点啦_百 ...
在 SQL Server 2005 中,许多管bai理活动和信息活动都可以使用du系统存储zhi过程来执行。系统存储过程可分为下表所示的几类。整张对应表请在MSDN中输入“系统存储过程”检索。Active Directory 存储过程用于在 Microsoft Windows 2000 Active Directory 中注册 SQL Server 实例和 SQL Server 数据库。

“SQL Server的存储过程”是什么意思?
SQL Server 存储过程是用 Transact-SQL 语句 CREATE PROCEDURE 创建的,并可用 ALTER PROCEDURE 语句进行修改。存储过程定义包含两个主要组成部分:过程名称及其参数的说明,以及过程的主体(其中包含执行过程操作的 Transact-SQL 语句)。

存储过程存储过程的种类
存储过程是SQL Server中用于执行特定任务的预编译代码块。它们为数据库操作提供了一种更高效、安全和易于维护的方法。根据创建者和执行方式的不同,存储过程可以分为几种类型。首先,系统存储过程以“sp_”开头,专门用于数据库管理和维护,例如备份、恢复、创建索引等操作。这些存储过程由系统自动提供,无...

SQL Server的存储过程怎么写?
SQL server中如何存储:首先准备数据,测试存储过程 use ssqadm;创建测试books表 create table books_test ( book_id int identity(1,1) primary key,book_name varchar(20),book_price float,book_auth varchar(10));插入测试数据 insert into books_test (book_name,book_price,book_auth)values ...

在SQL Server数据库中 存储过程是什么,希望给点例题
存储过程是一段存储在系统中可随时使用的可带参数的SQL执行语句或程序段。使用存储过程可以避免重复的填写SQL语句、可以快速的得到符合条件的某段SQL语句的执行结果。例子(MSSQL):比如想实现一个表a(aid int,atime datetime)输入aid的值得到对应的atime的值 创建:create proc proc_test \/\/创建过程 ai...

SQL Server
1)系统存储过程:存储在master库中名称以sp_为前缀,主要是从系统表中获取信息,从而为系统管理员管理SQL Server提供支持。2)用户自定义:由用户创建并能完成某一特定功能的存储过程 3、优点 1)提高执行效率:存储过程的执行速度比批处理的执行速度快。2)增加系统编程能力:存储过程使用编程设计模块化...

sql server 2008,如何查看存储过程里面的内容?
1 打开Microsoft SQL Server数据库管理工具,选择SQL Server身份验证,输入登录名和用户密码,点击连接按钮。2 选择要查看的数据库,展开所有选项。3 在展开的所有列表中,选择‘可编程性’文件夹,并将其展开。4 在‘可编程性’文件夹里,选择‘存储过程’并单击其前面的‘+’号,让其展开。下拉列表...

sql server中怎样创建保存数据的存储过程
在SQL Server中,可以使用两种方法创建存储过程 :利用SQL Server 管理平台创建存储过程。使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。创建存储过程时,需要确定存储过程的几个组成部分:①所有的输入参数以及传给调用者的输出参数。②被执行的针对数据库的操作语句,包括调用其它存储过程的语句...

sql server 存储过程
sql server 可以由DTc microsoft distributed transaction coordinator 来支持处理分布式事务,可以使用 BEgin distributed transaction 命令启动一个分布式事务处理 分二阶段:A 准备阶段 B 提交阶段执行教程:1、sql 脚本或应用程序连接执行启动分布式事务的sql语句2、执行该语句的sql在为事务中的主控服务器3、脚本或应用程序...

相似回答