【转】SQL Server查询数据库所有存储过程、触发器、索引信息SQL分享

 更新时间:2020年7月14日 13:41  点击:1708

1. 查询所有存储过程

select Pr_Name as [存储过程], [参数]=stuff((select ','+[Parameter]from (select Pr.Name as Pr_Name,parameter.name +' ' +Type.Name + ' ('+convert(varchar(32),parameter.max_length)+')' as Parameterfrom sys.procedures Pr left joinsys.parameters parameter on Pr.object_id = parameter.object_idinner join sys.types Type on parameter.system_type_id = Type.system_type_idwhere type = 'P') t where Pr_Name=tb.Pr_Name for xml path('')), 1, 1, '')from (select Pr.Name as Pr_Name,parameter.name +' ' +Type.Name + ' ('+convert(varchar(32),parameter.max_length)+')' as Parameterfrom sys.procedures Pr left joinsys.parameters parameter on Pr.object_id = parameter.object_idinner join sys.types Type on parameter.system_type_id = Type.system_type_idwhere type = 'P')tbwhere Pr_Name not like 'sp_%' --and Pr_Name not like 'dt%'group by Pr_Nameorder by Pr_Name

2. 存储过程信息查询

select Pr.Name as Pr_Name,parameter.name,T.Name,convert(varchar(32),parameter.max_length) as 参数长度,parameter.is_output as 是否是输出参数,parameter.*from sys.procedures Pr left joinsys.parameters parameter on Pr.object_id = parameter.object_idinner join sys.types T on parameter.system_type_id = T.system_type_idwhere Pr.type = 'P' and Pr.Name like 'order_%' and T.name!='sysname' order by Pr.Name

3. 查询所有触发器

select triggers.name as [触发器],tables.name as [表名],triggers.is_disabled as [是否禁用],
triggers.is_instead_of_trigger AS [触发器类型],case when triggers.is_instead_of_trigger = 1 then 'INSTEAD OF'when triggers.is_instead_of_trigger = 0 then 'AFTER'else nullend as [触发器类型描述]from sys.triggers triggersinner join sys.tables tables on triggers.parent_id = tables.object_idwhere triggers.type ='TR'order by triggers.create_date

4. 查询所有索引

select indexs.Tab_Name as [表名],indexs.Index_Name as [索引名] ,indexs.[Co_Names] as [索引列],
Ind_Attribute.is_primary_key as [是否主键],Ind_Attribute.is_unique AS [是否唯一键],
Ind_Attribute.is_disabled AS [是否禁用]from (select Tab_Name,Index_Name, [Co_Names]=stuff((select ','+[Co_Name] from( select tab.Name as Tab_Name,ind.Name as Index_Name,Col.Name as Co_Name from sys.indexes indinner join sys.tables tab on ind.Object_id = tab.object_id and ind.type in (1,2)inner join sys.index_columns index_columns on tab.object_id = index_columns.object_id and ind.index_id = index_columns.index_idinner join sys.columns Col on tab.object_id = Col.object_id and index_columns.column_id = Col.column_id
) t where Tab_Name=tb.Tab_Name and Index_Name=tb.Index_Name for xml path('')), 1, 1, '')from (select tab.Name as Tab_Name,ind.Name as Index_Name,Col.Name as Co_Name from sys.indexes indinner join sys.tables tab on ind.Object_id = tab.object_id and ind.type in (1,2)inner join sys.index_columns index_columns on tab.object_id = index_columns.object_id and ind.index_id = index_columns.index_idinner join sys.columns Col on tab.object_id = Col.object_id and index_columns.column_id = Col.column_id
)tbwhere Tab_Name not like 'sys%'group by Tab_Name,Index_Name
) indexs inner join sys.indexes Ind_Attribute on indexs.Index_Name = Ind_Attribute.nameorder by indexs.Tab_Name

5. 显示存储过程内容

SELECT TEXT FROM syscomments WHERE id=object_id('SP_NAME')

SP_HELPTEXT 'SP_NAME'

 

[!--infotagslink--]

相关文章

  • 金额阿拉伯数字转换为中文的存储过程

    Create Procedure AtoC @ChangeMoney Money as Set Nocount ON Declare @String1 char(20) Declare @String2 char(30) ...2016-11-25
  • PHP操作MSSQL存储过程修改用户密码

    存储过程在数据库的应用中我们用到的非常的多了,下面我们来看一篇关于PHP操作MSSQL存储过程修改用户密码的例子,具体的如下所示。 mssql2008 存储过程 下面可以直接...2016-11-25
  • MySQL中的联合索引学习教程

    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进...2015-11-24
  • MySql存储过程之逻辑判断和条件控制

    具体详情请看下文小编给大家带来的知识点。同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE1、IF判断IF判断的格式是这样的:IF expression THEN commands [ELSEIF ex...2015-10-21
  • PHP调用MySQL存储过程并返回值实现程序

    本文章来给大家详细介绍在php中如何来调用执行mysql存储过程然后返回由存储过程返回的值了,有需要了解的同学可进入参考。 。调用存储过程的方法。 a。如果存储过...2016-11-25
  • MySQL中的唯一索引的简单学习教程

    mysql 唯一索引UNIQUE一般用于不重复数据字段了我们经常会在数据表中的id设置为唯一索引UNIQUE,下面我来介绍如何在mysql中使用唯一索引UNIQUE吧。 创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复...2015-11-24
  • C#调用存储过程详解(带返回值、参数输入输出等)

    这篇文章主要介绍了C#调用存储过程的方法,结合实例形式详细分析了各种常用的存储过程调用方法,包括带返回值、参数输入输出等,需要的朋友可以参考下...2020-06-25
  • R语言 install.packages 无法读取索引的解决方案

    这篇文章主要介绍了R语言 install.packages 无法读取索引的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • mysql存储过程实现split示例

    复制代码 代码如下:call PROCEDURE_split('分享,代码,片段',',');select * from splittable;复制代码 代码如下:drop PROCEDURE if exists procedure_split;CREATE PROCEDURE `procedure_split`( inputstring varc...2014-05-31
  • MYSQL中常用的强制性操作(例如强制索引)

    其他强制操作,优先操作如下:mysql常用的hint对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在mysql里,也有类似的hint功能。下面介绍一些常用的。强制索引 FORCE INDEX...2014-05-31
  • 详解c#索引(Index)和范围(Range)

    这篇文章主要介绍了c#索引(Index)和范围(Range)的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-12-08
  • c#调用存储过程实现登录界面详解

    c#调用存储过程实现登录界面详解...2020-06-25
  • c#获取存储过程返回值示例分享

    这篇文章主要介绍了C#获取存储过程返回值的方法,大家参考使用吧...2020-06-25
  • MySQL 索引知识汇总

    这篇文章主要介绍了MySQL 索引使用方法的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-05
  • oracle索引的测试实例代码

    这篇文章主要给大家介绍了关于oracle索引测试的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-17
  • MySQL带你秒懂索引下推

    如果你在面试中,听到MySQL5.6”、“索引优化” 之类的词语,你就要立马get到,这个问的是“索引下推”。本文就来分分享这个小知识点索引下推...2021-09-16
  • php函数索引(1)

    Abs: 取得绝对值。 Acos: 取得反余弦值。 ada_afetch: 取得数据库的返回列。 ada_autocommit: 开关自动改动功能。 ada_close: 关闭 Adabas D 链接。 ada_commit: 改...2016-11-25
  • Mysql判断表字段或索引是否存在

    这篇文章主要介绍了Mysql判断表字段或索引是否存在的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下...2016-06-12
  • MySQL数据库优化技术之索引使用技巧总结

    这篇文章主要介绍了MySQL数据库优化技术之索引使用方法,结合实例形式总结分析了MySQL表的优化、索引设置、SQL优化等相关技巧,非常具有实用价值,需要的朋友可以参考下...2016-07-29
  • 在ACCESS 中调用后台存储过程

    ACCESS是一个Client/Server的优秀前端开发工具,具有易学易用,界面友好,开发简单,和其他数据库接口灵活。但是,它要对大量数据处理时,速度比较慢。深圳供电局现有60万用户,下...2016-11-25