实用技巧:创建你自己的系统存储过程

实用技巧:创建你自己的系统存储过程

ID:24697142

大小:53.00 KB

页数:4页

时间:2018-11-15

实用技巧:创建你自己的系统存储过程_第1页
实用技巧:创建你自己的系统存储过程_第2页
实用技巧:创建你自己的系统存储过程_第3页
实用技巧:创建你自己的系统存储过程_第4页
资源描述:

《实用技巧:创建你自己的系统存储过程》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、实用技巧:创建你自己的系统存储过程>>教育资源库  通过在一个SQLServer主数据库中创建一个带有sp_前缀的存储过程,你可以充分利用引擎存储过程名称解析算法的优势。如果一个存储过程以sp_开头,那么这个引擎将会在检查当前数据库和属主之前先查找主数据库。顺便说一句,这个名称解析正好是你从来不把自己应用数据库存储过程的前缀命名为sp_,因为每次你尝试着执行这些程序时,你都会不断地产生与不必要查询和缓存缺失有关的费用。  当从主数据库中运行一个带着sp_前缀的程序时,有一些细微的地方需要注意,比如用哪一个数据库上下文环境,什么影响了数据所返回的。  请看下

2、面的例子:   USEMASTER  GO  IFOBJECT_ID('SP_GETOBJECTS')ISNOTNULL  DROPPROCEDUREDBO.sp_GETOBJECTS  GO  CREATEPROCEDUREDBO.sp_GETOBJECTS  AS  SETNOCOUNTON  SELECTDB_NAME()  --ANSIvieployee'  --SQLServer2005table  SELECT*  FROMsys.objects  E='Employee'  --SQLServer200

3、0table  SELECT*  FROMsysobjects  E='Employee'  SELECTTOP1*  FROMHumanResources.Employee  GO  USEAdventureE()在AdventureATION_SCHEMA和SQLServer2005语句不能利用这个方法,并且员工表的查询彻底失败。这种方法行不通,是因为实际上这两个语句在主数据库上下文环境下执行。当在主数据库中找到这个存储过程时,把当前数据库上下文环境应用到SQLServer2005具体目录信息是不明智的。  图1  图2  那么,SQL

4、Server2000系统表最终淘汰,我们要如何解决这个问题呢?这里有一个无正式文件说明的系统存储过程叫做sp_ms_marksystemobject,它可以用来标记该引擎,因此这个存储过程应该可以运行,尽管它是一个微软提供的系统存储过程。与其它无正式文件说明的命令一样,它有可能在以后的一个版本中消失,所以你可能要自担风险来使用它。   USEMASTER  GO  EXECsp_ms_marksystemobject'SP_GETOBJECTS'  GO  SELECTNAME,IS_MS_SHIPPED  FROMSYS.OBJECTS 

5、 E='SP_GETOBJECTS'  GO  把我们的存储过程记为sp_ms_marksystemobject表示它已经用引擎登录了,因为它是一个微软提供的过程。  图3  现在重新运行这个存储过程会显示所有的句子是在AdventureWorks数据库环境下运行的。   USEAdventureWorks  GO  EXECsp_GETOBJECTS  GO  图4  正如你所看到的,这是一种有效方法,这样你才可以专注于你经常运行的查询,因而这些查询在服务器的多个数据库中也是可用的。应该注意的是,把对象增加到该主数据库中一般不会被当作一种

6、好的行为,最好不要在生产数据库中使用这个功能。>>>>这篇文章来自..,。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。