如何在SQL Server中实现扩展存储过程

如何在SQL Server中实现扩展存储过程,第1张

(1)执行速度快。

存储过程创建是就已经通过语法检查和性能优化,在执行时无需每次编译。

存储在数据库服务器,性能高。

(2)允许模块化设计。

只需创建存储过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改 。

(3)提高系统安全性。

可将存储过程作为用户存取数据的管道。可以限制用户对数据表的存取权限,建立特定的存储过程供用户使用,完成对数据的访问。

存储过程分为三类:

系统存储过程:(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.在存储过程名称前边添加#或者##,所建立的存储过程则是“临时存储过程“(#是局部临时存储过程,##是全局临时存储过程)。

分类: 电脑/网络 >>程序设计 >>其他编程语言

解析:

扩展存储过程使您得以使用象 C 这样的编程语言创建自己的外部例程。对用户来说,扩展存储过程与普通存储过程一样,执行方法也相同。可将参数传递给扩展存储过程,扩展存储过程可返回结果,也可返回状态。扩展存储过程可用于扩展 Microsoft® SQL Server™ 2000 的功能。

扩展存储过程是 SQL Server 可以动态装载并执行的动态链接库 (DLL)。扩展存储过程直接在 SQL Server 的地址空间运行,并使用 SQL Server 开放式数据服务 (ODS) API 编程。

-----------------

SQL Server 数据库系统管理一书中定义:

Sql Server中另一类的存储过程是扩展存储过程,它们是以C语言等编写的外部程序,以动态链接库(Dll)形式存储在服务器上,SQL Server可以动态装载并执行它们。编写好扩展存储过程后,固定服务器角色(sysadamin)成员即可在Sql Server服务器上注册该扩展存储过程,并将它们的执行权限授权其他用户。扩展存储过程只能添加到Master数据库。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11630204.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存