SQL Server查询所有存储过程信息、触发器、索引

1. [代码]查询所有存储过程     跳至 [1] [2] [3] [4] [5] [6] [全屏预览]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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 Parameter

from sys.procedures Pr left join

sys.parameters parameter on Pr.object_id = parameter.object_id

inner join sys.types Type on parameter.system_type_id = Type.system_type_id

where 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 Parameter

from sys.procedures Pr left join

sys.parameters parameter on Pr.object_id = parameter.object_id

inner join sys.types Type on parameter.system_type_id = Type.system_type_id

where type = ‘P‘

)tb

where Pr_Name not like ‘sp_%‘ --and Pr_Name not like ‘dt%‘

group by Pr_Name

order by Pr_Name

2. [代码]查询所有触发器     跳至 [1] [2] [3] [4] [5] [6] [全屏预览]

?


1

2

3

4

5

6

7

8

9

10

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 null

end as [触发器类型描述]

from sys.triggers triggers

inner join sys.tables tables on triggers.parent_id = tables.object_id

where triggers.type =‘TR‘

order by triggers.create_date

3. [代码]查询所有索引     跳至 [1] [2] [3] [4] [5] [6] [全屏预览]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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 ind

inner 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_id

inner 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 ind

inner 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_id

inner join sys.columns Col on tab.object_id = Col.object_id and index_columns.column_id = Col.column_id

)tb

where Tab_Name not like ‘sys%‘

group by Tab_Name,Index_Name

) indexs inner join sys.indexes Ind_Attribute on indexs.Index_Name = Ind_Attribute.name

order by indexs.Tab_Name

4. [代码][SQL]代码     跳至 [1] [2] [3] [4] [5] [6] [全屏预览]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

DECLARE @s VARCHAR(4000),@n INT,@i INT,@s1 VARCHAR(100)

SELECT IDENTITY(INT) id,text INTO ##

FROM syscomments

SELECT @[email protected]@ROWCOUNT,@i=0

WHILE @i<@n

BEGIN

SELECT @[email protected]+1,@s=‘‘

SELECT @s1=REPLACE(REPLACE(RTRIM(LTRIM(STUFF(STUFF(text,CHARINDEX(‘AS‘,text),40000,‘‘),1,

CHARINDEX(‘PROC‘,STUFF(text,CHARINDEX(‘AS‘,text),40000,‘‘))+4,‘‘))),CHAR(10),‘‘),CHAR(13),‘‘)

FROM ## WHERE ID=RTRIM(@i)

--SELECT @s1,ASCII(SUBSTRING(@s1,3,1))

--SELECT LEN(REPLACE(REPLACE(@s1,CHAR(13),‘‘),CHAR(10),‘‘))

SELECT @s=‘SELECT text FROM tempdb.dbo.## WHERE ID=‘ + RTRIM(@i)

EXEC(‘EXEC master..xp_cmdshell ‘‘bcp "‘ + @s + ‘ " queryout "e:\ProcTXT\‘ + @s1 + ‘.txt" -S"ROBINHOME\SQLEXPRESS" -c -U"sa" -P"bd5178"‘‘‘)

END

DROP TABLE ##

--自己写的 如何识别换行??? 还有些非存储过程的对象

SELECT top 10 text FROM syscomments where id in(

select object_id from sys.procedures where type = ‘P‘)

SELECT text FROM syscomments where id in(

select object_id from sys.procedures where type = ‘P‘)

and charindex(‘ALLSTOCK‘,text)>0

and charindex(‘CREATE PROCEDURE‘,text)>0

5. [代码]显示存储过程内容     跳至 [1] [2] [3] [4] [5] [6] [全屏预览]

?


1

2

3

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

SP_HELPTEXT ‘SP_NAME‘

6. [代码]获取只有用户定义的存储过程     跳至 [1] [2] [3] [4] [5] [6] [全屏预览]

?


1

2

3

4

5

6

USE [your_database_name_here];

GO

SELECT * FROM sys.all_objects

WHERE ([type] = ‘P‘ OR [type] = ‘X‘ OR [type] = ‘PC‘) AND [is_ms_shipped] = 0 ORDER BY [name];

GO

SELECT * FROM sysobjects where type=‘P‘

时间: 2024-08-28 13:12:13

SQL Server查询所有存储过程信息、触发器、索引的相关文章

遍历SQL SERVER中所有存储过程和触发器

如果需要查找某个存储过程或触发器中是否含有某段文本(比如:你想知道有哪些存储过程操作了某个表) 可以这么写 select name from sysobjects o, syscomments s where o.id = s.id and text like '%text%' 原文地址:https://www.cnblogs.com/songr/p/9020081.html

SQL命令查询Oracle存储过程信息(代码内容等)

SELECT * FROM ALL_SOURCE  where TYPE='PROCEDURE'  AND TEXT LIKE '%0997500%'; --查询ALL_SOURCE中,(脚本代码)内容与0997500模糊匹配的类型为PROCEDURE(存储过程)的信息. 根据GROUP BY TYPE 该ALL_SOURCE中只有以下5种类型1 FUNCTION2 JAVA SOURCE3 PACKAGE4 PACKAGE BODY5 PROCEDURE

SQL Server 查询性能优化 相关文章

来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Server 查询性能优化——覆盖索引(二) SQL Server 查询性能优化——创建索引原则(一) SQL Server 查询性能优化——创建索引原则(二) SQL Server 查询性能优化——索引与SARG(一) SQL Server 查询性能优化——索引与SARG(二) SQL Server 查

Sql Server查询性能优化之走出索引的误区

据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会.也什么没有必要去关心.了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是,或者干脆把整个查询SQL直接发给DBA,让DBA直接帮忙优化了,所以造成的状况就是开发人员对于索引的理解.认识很局限,以下就把我个人对于索引的理解及浅薄认识和大家分享下,希望能解除一些大家的疑惑,一起走出索引的误区 误区1.在表上建立了索引,在查询时用到了索引的列,索引就一定会生效 首先明确下这样的

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何在SQL Server存储过程中获取另一存储过程的执行结果记录集?如何在存储过程中检索动态SQL语句的执行结果?如何实现类似SELECT * FROM (EXEC procedure_name @parameters_var) AS datasource ... 的功能?procedure_

sql server 查询某个表被哪些存储过程调用

原文:sql server 查询某个表被哪些存储过程调用 sql server 查询某个表被哪些存储过程调用 select distinct object_name(id) from syscomments where id in (select id from sysobjects where type ='P') and text like'%TableName%' 原文地址:https://www.cnblogs.com/lonelyxmas/p/9491635.html

Sql Server 常用系统存储过程大全

-- 来源于网络 -- 更详细的介结参考联机帮助文档 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_loginconfig --*报告SQL Server 实例在Windows 上运行时的登录安全配置 xp_logininfo --*返回有关Windows 认证登录的信息. xp_msver --*返回有关Microsoft SQL Server 的版本信息 xp_enumgroups    --返回Wi

SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨

SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile).那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译(recompile)的条件:     - 对查询所引用的表或视图进行更改(ALTER TABLE 和 ALTER VIEW).     - 对执行计划所使用的任何索引进行更改.     - 对执行计划所使用的统计信息进行更新,这些更新可能是从语句(如 UPDATE STA

理解性能的奥秘——应用程序中慢,SSMS中快(2)——SQL Server如何编译存储过程

接上文:理解性能的奥秘--应用程序中慢,SSMS中快(1)--简介 本文介绍SQL Server如何编译存储过程并使用计划缓存.如果你的应用程序完全没有用到存储过程,而是直接使用SQL语句提交请求,那么本文大部分内容也是有效的.但是关于动态SQL的编译会在后面章节介绍,这里重点关注让人头痛的存储过程问题. 什么是存储过程? 虽然这个问题有点愚蠢,但是实际的问题是:什么对象有自己的查询计划?SQL Server为下面四类对象创建查询计划: 存储过程. 标量用户自定义函数. 多步表值函数. 触发器