sql server查询可编程对象定义的方式对比以及整合
| 对象类型描述 | 对象类型简写 |
sys.sp_helptext
|
sys.sql_modules |
sys.system_sql_modules
|
sys.all_sql_modules
|
object_definition |
|
CHECK_CONSTRAINT
|
C
|
支持 | 不支持 |
不支持
|
不支持
|
支持
|
|
DEFAULT_CONSTRAINT(contraint,stand-alone)
|
D
|
支持 | 支持 |
不支持
|
支持 |
支持
|
|
SQL_SCALAR_FUNCTION
|
FN
|
支持
|
支持 |
支持
|
支持
|
支持
|
|
SQL_INLINE_TABLE_VALUED_FUNCTION
|
IF
|
支持
|
支持
|
支持 |
支持
|
支持
|
|
SQL_STORED_PROCEDURE
|
P
|
支持
|
支持 | 支持 |
支持
|
支持
|
|
RULE(old-style,stand-alone)
|
R |
支持
|
支持
|
不支持
|
支持 |
支持
|
|
REPLICATION FILTER PROCEDURE
|
RF |
支持
|
支持
|
支持
|
支持 |
支持
|
|
SQL_TABLE_VALUED_FUNCTION
|
TF
|
支持
|
支持
|
支持
|
支持
|
支持
|
|
SQL_TRIGGER
|
TR
|
支持(除数据库DDL触发器和服务器触发器外)
|
支持(除服务器触发器外)
|
不支持
|
支持(除服务器触发器外)
|
支持(除服务器触发器外)
|
|
USER_TABLE
|
U
computed_column
|
支持 |
不支持
|
不支持
|
不支持 |
不支持
|
|
VIEW
|
V
|
支持 |
支持
|
支持
|
支持
|
支持
|
注意:
IF OBJECT_ID(N'[dbo].[usp_helptext2]', 'P') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[usp_helptext2];
END
GO --==================================
-- 功能: 查看可编程对象定义
-- 说明: 支持用户定义类型,可以运行于SQL Server 2005+
-- 创建: yyyy-MM-dd hh:mm-hh:mm XXX 创建内容描述
-- 修改: yyyy-MM-dd hh:mm-hh:mm XXX 修改内容描述
--==================================
CREATE PROCEDURE [dbo].[usp_helptext2]
(
@nvcObjectName AS NVARCHAR(776) -- 对象名称,可以支持的对象类型为(C、D、FN、IF、P、R、RF、TF、TR、U、V)
,@nvcComputedColumnName AS NVARCHAR(128) = NULL -- 计算列名称(如果@nvcObjectName的对象类型为U,则该参数表示计算列名称)
)
AS
BEGIN
SET NOCOUNT ON; SET @nvcObjectName = ISNULL(@nvcObjectName, N'');
IF (@nvcObjectName = N'')
BEGIN
RAISERROR(16902, -1, -1,N'usp_helptext2', N'@nvcObjectName');
RETURN(1);
END SET @nvcComputedColumnName = ISNULL(@nvcComputedColumnName, N''); DECLARE @tntRetVal AS TINYINT;
SET @tntRetVal = 0; DECLARE @tblObjDef AS TABLE (
[Text] NVARCHAR(1000) NULL
); DECLARE
@intObjectID AS INT
,@chaType AS CHAR(2)
,@nvcText AS NVARCHAR(MAX);
SELECT
@intObjectID = 0
,@chaType = ''
,@nvcText = N'';
SELECT
@intObjectID = [object_id]
,@chaType = [type]
FROM [sys].[all_objects]
WHERE
[type] IN ('C', 'D', 'FN', 'IF', 'P', 'R', 'RF', 'TF', 'TR', 'U', 'V')
AND [name] = PARSENAME(@nvcObjectName, 1); IF (@nvcComputedColumnName > N'') -- 获取计算列定义
BEGIN
IF (@chaType NOT IN ('S', 'U', 'TF'))
BEGIN
RAISERROR(15218, -1, -1, @nvcObjectName);
RETURN(1);
END INSERT INTO @tblObjDef ([Text])
EXEC [sys].[sp_helptext]
@objname = @nvcObjectName -- nvarchar(776)
,@columnname = @nvcComputedColumnName -- sysname IF(@@ROWCOUNT = 0)
BEGIN
SET @tntRetVal = 1;
END SELECT
@nvcText = ISNULL([Text], N'')
FROM @tblObjDef;
END
ELSE IF (@intObjectID <> 0) -- 获取除计算列和服务器触发器以外的所有对象类型的定义
BEGIN
SET @nvcText = OBJECT_DEFINITION(@intObjectID); IF(@@ROWCOUNT = 0)
BEGIN
SET @tntRetVal = 1;
END
END
ELSE IF (@intObjectID = 0) -- 尝试获取服务器触发器定义
BEGIN
SELECT
@nvcText = T1.[definition]
FROM [sys].[server_sql_modules] AS T1
INNER JOIN [sys].[server_triggers] AS T2
ON [T1].[object_id] = [T2].[object_id]
WHERE T2.[name] = @nvcObjectName; IF(@@ROWCOUNT = 0)
BEGIN
SET @tntRetVal = 1;
END
END SELECT
@nvcText AS [Text]; RETURN(@tntRetVal);
END
GO












sql server查询可编程对象定义的方式对比以及整合的更多相关文章
- SQL Server 查询性能优化 相关文章
来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Ser ...
- Sql Server查询性能优化之走出索引的误区
据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是, ...
- SQL Server 查询分析器提供的所有键盘快捷方式(转)
下表列出 SQL Server 查询分析器提供的所有键盘快捷方式. 活动 快捷方式 书签:清除所有书签. CTRL-SHIFT-F2 书签:插入或删除书签(切换). CTRL+F2 书签:移动到下一个 ...
- 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?
如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何 ...
- SQL Server 查询分析器键盘快捷方式
下表列出 SQL Server 查询分析器提供的所有键盘快捷方式. 活动 快捷方式 书签:清除所有书签. CTRL-SHIFT-F2 书签:插入或删除书签(切换). CTRL+F2 书签:移动到下一个 ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
- 用SQL Server查询所有数据并显示
利用SQL Server查询数据,并把所有数据显示在页面上. "%> <%@page import="jdbc.sqlServer"%> <%@p ...
- SQL Server查询性能
sql server常用语句总结 http://ace105.blog.51cto.com/639741/792519 SQL Server 性能调优(一)--从等待状态判断系统资源瓶颈 ...
- [转] 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能
首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...
随机推荐
- CSS HTML元素布局及Display属性
本篇文章主要介绍HTML的内联元素.块级元素的分类与布局,以及dispaly属性对布局的影响. 目录 1. HTML 元素分类:介绍内联元素.块级元素的分类. 2. HTML 元素布局:介绍内联元素. ...
- HashMap与TreeMap源码分析
1. 引言 在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...
- Android 获取系统相册中的所有图片
Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public ...
- InnoDB关键特性学习笔记
插入缓存 Insert Buffer Insert Buffer是InnoDB存储引擎关键特性中最令人激动与兴奋的一个功能.不过这个名字可能会让人认为插入缓冲是缓冲池中的一个组成部分.其实不然,Inn ...
- css实现单行,多行文本溢出显示省略号……
1.单行文本溢出显示省略号我们可以直接用text-overflow: ellipsis 实现方法: <style> .div_text{width: 300px; padding:10px ...
- 玩转Vim 编辑器
一:VIM快速入门 1.vim模式介绍 以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数 ...
- 解决Android Studio 无法显示Layout视图问题
在Android Studio 当中,如果你选择的SDK的版本 与你所显示的视图版本不一致时,会出现这个错误 Exception raised during rendering:com/android ...
- Asp.NET + SQLServer 部署注意事项
1. 内存设置最大值(如果不设置, 会造成内存占用太大,带来性能问题) IIS 设置最大内存 sqlserver 设置最大内存
- Mysql - 查询之关联查询
查询这块是重中之重, 关系到系统反应时间. 项目做到后期, 都是要做性能测试和性能优化的, 优化的时候, 数据库这块是一个大头. sql格式: select 列名/* from 表名 where 条件 ...
- WebAPI
WebAPI的Host OWIN IIS WebAPI 的handler和Filter有啥区别? WebAPI 常用 Filters Exception Filter Timer Filter Lo ...