sql server:查詢系統表
---查看所有存储过程或视图的位置
select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b
where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in ('P','V','AF')
order by a.[name] ASC
GO --1、查看所有存储过程与函数
exec sp_stored_procedures
--或者
select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name
--2、查看存储过程的内容
select text from syscomments where id=object_id('dbo.CalcCustomerPrice')
-- 或者用
sys.sp_helptext dbo.CalcCustomerPrice
GO ---
sys.sp_helptext @objname = N'CalcCustomerPrice', -- nvarchar(776)
@columnname = NULL -- sysname sys.sp_helptext dbo.CalcCustomerPrice
GO sys.sp_helptext @objname = N'', -- nvarchar(776)
@columnname = NULL -- sysname --3、查看存储过程的参数情况
select '参数名称' = name,
'类型' = type_name(xusertype),
'长度' = length,
'参数顺序' = colid,
'排序方式' = collation
from syscolumns
where id=object_id('CalcCustomerPrice') --4、查看所有存储过程内容
select b.name ,a.text from syscomments a,sysobjects b where object_id(b.name)=a.id and b.xtype in('P','TR') --5、查看包含字符串内容的存储过程
select b.name ,a.text from syscomments a,sysobjects b
where
charindex('字符串内容',a.text)>0 and
object_id(b.name)=a.id and b.xtype in('P','TR')
GO --查看存储过程参数信息:
--如果返回值>1,则有参数。否则无
CREATE PROC sp_PROC_Params
@procedure_name sysname , --存储过程或者用户定义函数名
@group_number int=1 , --存储过程的组号,必须在0到32767之间,0表示显示该存储过程组的所有参数
@operator nchar(2)=N'=' --查找对象的运算符
AS
SET NOCOUNT ON
DECLARE @SQL nvarchar(4000)
SET @SQL=N'SELECT
PorcedureName=CASE
WHEN o.xtype IN(''P'',''X'')
THEN QUOTENAME(o.name)+N'';''+CAST(c.number as varchar)
WHEN USER_NAME(o.uid)=''system_function_schema''
AND o.xtype=''FN''
THEN o.name
WHEN USER_NAME(o.uid)=''system_function_schema''
THEN ''::''+o.name
WHEN o.xtype=''FN''
THEN QUOTENAME(USER_NAME(o.uid))+N''.''+QUOTENAME(o.name)
ELSE QUOTENAME(o.name) END,
Owner=USER_NAME(o.uid),
GroupNumber=c.number,
ParamId=c.colid,
ParamName=CASE
WHEN o.xtype=''FN'' AND c.colid=0 THEN ''<Returns>''
ELSE c.name END,
Type=QUOTENAME(t.name)+CASE
WHEN t.name IN (''decimal'',''numeric'')
THEN N''(''+CAST(c.prec as varchar)+N'',''+CAST(c.scale as varchar)+N'')''
WHEN t.name=N''float''
OR t.name like ''%char''
OR t.name like ''%binary''
THEN N''(''+CAST(c.prec as varchar)+N'')''
ELSE '''' END,
Orientation=CASE
WHEN o.xtype=''FN'' AND c.colid=0 THEN ''<Returns>''
ELSE N''Input''
+CASE WHEN c.isoutparam=1 THEN ''/Output'' ELSE '''' END
END
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
AND c.xusertype=t.xusertype
AND o.name'
+CASE WHEN @operator IN ('=','>','>=','!>','<','<=','!<','<>','!=')
THEN @operator+QUOTENAME(@procedure_name,'''')
WHEN @operator='IN'
THEN @operator+N' IN('+QUOTENAME(@procedure_name,'''')+')'
WHEN @operator IN ('LIKE','%')
THEN ' LIKE '+QUOTENAME(@procedure_name,'''')
ELSE '='+QUOTENAME(@procedure_name,'''')
END+N'
AND(('+CASE WHEN @group_number BETWEEN 1 AND 32767
THEN N'c.number='+CAST(@group_number as varchar)
WHEN @group_number=0 THEN N'1=1'
ELSE N'c.number=1'
END+N' AND o.xtype IN(''P'',''X''))
OR (c.number=0 AND o.xtype=''FN'')
OR (c.number=1 AND o.xtype IN(''IF'',''TF'')))'
EXEC sp_executesql @SQL
GO --返回在 Sql Server 实例中的数据库或可以 通过数据库网关访问的数据库
EXEC sp_databases
GO EXEC SYS.sp_databases
GO --返回可在当前环境中查询的对象列表。也就是说,返回任何能够在 FROM 子句中出现的对象(不包括同义词对象) EXEC sp_tables @table_owner='dbo'
GO EXEC sp_tables
@table_name = '%',
@table_owner = 'Person',
@table_qualifier = 'AdventureWorks2012';
GO
--返回针对指定的表或索引视图的所有索引和统计信息的列表,用于观察表的索引情况,很有用
EXEC sp_statistics 'APClericalCostDetail'
GO --返回 SQL Server、数据库网关或基础数据源的属性名称和匹配值的列表。
EXEC sys.sp_server_info
GO EXEC sp_server_info
GO EXEC SYS.sp_server_info @attribute_id = 0 -- int --返回当前环境中可查询的指定表或视图的列信息
EXEC sys.sp_columns @table_name = N'', -- nvarchar(384)
@table_owner = N'', -- nvarchar(384)
@table_qualifier = NULL, -- sysname
@column_name = N'', -- nvarchar(384)
@ODBCVer = 0 -- int EXEC sp_columns @table_name = N'APClericalCostDetail',
@table_owner = N'dbo'
GO --返回一组唯一标识表中某个行的最优列。如果事务更新了行中的某个值,则还将返回自动更新的列
EXEC sys.sp_special_columns @table_name = NULL, -- sysname
@table_owner = NULL, -- sysname
@table_qualifier = NULL, -- sysname
@col_type = '', -- char(1)
@scope = '', -- char(1)
@nullable = '', -- char(1)
@ODBCVer = 0 -- int GO EXEC sys.sp_special_columns @table_name = N'APClericalCostDetail', -- sysname
@table_owner = 'dbo'
GO --为当前环境中的单个存储过程或用户定义函数返回列信息
EXEC sys.sp_sproc_columns @procedure_name = N'', -- nvarchar(390)
@procedure_owner = N'', -- nvarchar(384)
@procedure_qualifier = NULL, -- sysname
@column_name = N'', -- nvarchar(384)
@ODBCVer = 0, -- int
@fUsePattern = NULL -- bit
GO EXEC sys.sp_sproc_columns @procedure_name = N'CalcVendorPrice', -- nvarchar(390)
@procedure_owner = N'dbo'
GO --返回指定的一个或多个表的表权限的列表,即 返回当前用户的 对该表的 INSERT、DELETE、UPDATE、SELECT、REFERENCES 权限,并且必须有该数据库的访问权。
EXEC sys.sp_table_privileges @table_name = N'', -- nvarchar(384)
@table_owner = N'', -- nvarchar(384)
@table_qualifier = NULL, -- sysname
@fUsePattern = NULL -- bit
GO EXEC sys.sp_table_privileges @table_name = N'APClericalCostDetail', -- nvarchar(384)
@table_owner = N'dbo'
GO --返回当前环境中单个表的列特权信息。
sp_column_privileges --返回当前环境中的存储过程列表
sp_stored_procedures --返回当前表中的主键信息 sp_pkeys
EXEC sys.sp_pkeys @table_name = NULL, -- sysname
@table_owner = NULL, -- sysname
@table_qualifier = NULL -- sysname
GO
EXEC sys.sp_pkeys @table_name = 'APClericalCostDetail', -- sysname
@table_owner = N'dbo'
GO
--返回当前表中的外键信息
EXEC sys.sp_fkeys @pktable_name = NULL, -- sysname
@pktable_owner = NULL, -- sysname
@pktable_qualifier = NULL, -- sysname
@fktable_name = NULL, -- sysname
@fktable_owner = NULL, -- sysname
@fktable_qualifier = NULL -- sysname
GO EXEC sys.sp_fkeys @pktable_name = 'APClericalCostDetail', -- sysname
@pktable_owner = N'dbo'
go --Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞和死锁 /*
视图中主要的字段:
1. Spid:Sql Servr 会话ID
2. Kpid:Windows 线程ID
3. Blocked:正在阻塞求情的会话 ID。如果此列为 Null,则标识请求未被阻塞
4. Waittype:当前连接的等待资源编号,标示是否等待资源,0 或 Null表示不需要等待任何资源
5. Waittime:当前等待时间,单位为毫秒,0 表示没有等待
6. DBID:当前正由进程使用的数据库ID
7. UID:执行命令的用户ID
8. Login_time:客户端进程登录到服务器的时间。
9. Last_batch:上次执行存储过程或Execute语句的时间。对于系统进程,将存储Sql Server 的启动时间
10.Open_tran:进程的打开事务个数。如果有嵌套事务,就会大于1
11.Status:进程ID 状态,dormant = 正在重置回话 ; running = 回话正在运行一个或多个批处理 ; background = 回话正在运行一个后台任务 ; rollback = 会话正在处理事务回滚 ; pending = 回话正在等待工作现成变为可用 ; runnable = 会话中的任务在等待获取 Scheduler 来运行的可执行队列中 ; spinloop = 会话中的任务正在等待自旋锁变为可用 ; suspended = 会话正在等待事件完成
12.Hostname:建立链接的客户端工作站的名称
13.Program_name:应用程序的名称,就是 连接字符串中配的 Application Name
14.Hostprocess:建立连接的应用程序在客户端工作站里的进程ID号
15.Cmd:当前正在执行的命令
16.Loginame:登录名
*/ SELECT * FROM Sys.SysProcesses
GO SELECT SPID = er.session_id
, ot.Threads
, RunningThreads = coalesce(rsp.RunningThreads,0)
, Pct_Comp = er.percent_complete
, Est_Comp_Time = CASE er.estimated_completion_time WHEN 0 THEN NULL ELSE dateadd(ms, er.estimated_completion_time, getdate()) END
, er.status
, er.command
, database_name = sd.name
, BlockedBy = wt.blocking_session_id
, HeadBlocker = coalesce(hb5.session_id, hb4.session_id, hb3.session_id, hb2.session_id, hb1.session_id)
, wait_type = coalesce(CASE er.wait_type WHEN 'CXPACKET' THEN 'CXPACKET - ' + sp.lastwaittype1 ELSE sp.lastwaittype1 END, lower(er.last_wait_type)) --Lowercase denotes it's not currently waiting, also noted by a wait time of 0.
, Wait_Time_Sec = Cast(er.wait_time/1000.0 as DEC(20,3))
, er.wait_resource
, Duration_Sec = Cast(DATEDIFF(s, er.start_time, GETDATE()) as DEC(20,0))
, CPU_Sec = Cast(er.cpu_time/1000.0 as DEC(20,3))
, Reads_K = Cast(er.reads/1000.0 as DEC(20,3))
, Writes_K = Cast(er.writes/1000.0 as DEC(20,3))
, [Statement] = SUBSTRING (st.text, er.statement_start_offset/2,
abs(CASE WHEN er.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), st.text)) * 2
ELSE er.statement_end_offset END - er.statement_start_offset)/2)
, st.text as Query
, es.login_time
, es.host_name
, program_name = CASE LEFT(es.program_name, 29)
WHEN 'SQLAgent - TSQL JobStep (Job '
THEN 'SQLAgent Job: ' + (SELECT name FROM msdb..sysjobs sj WHERE substring(es.program_name,32,32)=(substring(sys.fn_varbintohexstr(sj.job_id),3,100))) + ' - ' + SUBSTRING(es.program_name, 67, len(es.program_name)-67)
ELSE es.program_name
END
, es.client_interface_name
, es.login_name
, es.status
, es.total_scheduled_time
, es.total_elapsed_time
, er.start_time
, es.last_request_start_time
, es.last_request_end_time
, er.database_id
--, qp.query_plan
FROM sys.dm_exec_requests er
INNER JOIN sys.dm_exec_Sessions es on er.session_id=es.session_id
LEFT JOIN sys.databases sd on er.database_id=sd.database_id
INNER JOIN (SELECT session_id, count(1) Threads FROM sys.dm_os_tasks GROUP BY session_id) ot on er.session_id=ot.session_id
LEFT JOIN (SELECT spid, LastWaitType1 = MIN(lastwaittype), LastWaitType2 = MAX(lastwaittype) FROM sysprocesses sp WHERE waittime > 0 AND lastwaittype <> 'cxpacket' GROUP BY spid) sp ON er.session_id = sp.spid
LEFT JOIN (SELECT spid, RunningThreads = COUNT(1) FROM sysprocesses sp WHERE waittime = 0 GROUP BY spid) rsp ON er.session_id = rsp.spid
LEFT JOIN (SELECT session_id, max(blocking_session_id) blocking_session_id FROM sys.dm_os_waiting_tasks wt WHERE wt.blocking_session_id <> wt.session_id GROUP BY session_id) wt ON er.session_id = wt.session_id
LEFT JOIN (SELECT session_id, max(blocking_session_id) blocking_session_id FROM sys.dm_os_waiting_tasks wt GROUP BY session_id) hb1 ON wt.blocking_session_id = hb1.session_id
LEFT JOIN (SELECT session_id, max(blocking_session_id) blocking_session_id FROM sys.dm_os_waiting_tasks wt GROUP BY session_id) hb2 ON hb1.blocking_session_id = hb2.session_id
LEFT JOIN (SELECT session_id, max(blocking_session_id) blocking_session_id FROM sys.dm_os_waiting_tasks wt GROUP BY session_id) hb3 ON hb2.blocking_session_id = hb3.session_id
LEFT JOIN (SELECT session_id, max(blocking_session_id) blocking_session_id FROM sys.dm_os_waiting_tasks wt GROUP BY session_id) hb4 ON hb3.blocking_session_id = hb4.session_id
LEFT JOIN (SELECT session_id, max(blocking_session_id) blocking_session_id FROM sys.dm_os_waiting_tasks wt GROUP BY session_id) hb5 ON hb4.blocking_session_id = hb5.session_id
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS st
--CROSS APPLY sys.dm_exec_query_plan(er.plan_handle) qp
WHERE er.session_id <> @@SPID
--AND es.host_name like '%%'
--AND er.session_id = 2702
ORDER BY er.percent_complete DESC, er.cpu_time DESC, er.session_id --Use the below command to get the last input of an open session id
--dbcc inputbuffer(61) SELECT COUNT(*) FROM sys.dm_tran_active_transactions T JOIN sys.dm_tran_session_transactions S ON S.transaction_id = T.transaction_id WHERE transaction_begin_time < DATEADD(MS, -30000, GETDATE()) --2. With identifying database SELECT d.name, COUNT(*) as Tx, MIN(transaction_begin_time) as Earliest FROM sys.dm_tran_active_transactions tat
INNER JOIN sys.dm_exec_requests er
ON tat.transaction_id = er.transaction_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)
JOIN sys.databases d ON d.database_id = er.database_id WHERE transaction_begin_time <= DATEADD(MS, -30000, GETDATE()) GROUP BY d.name
GO select * from sys.dm_exec_sessions
GO
--Mapping System Tables to System Views (Transact-SQL)
---https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/mapping-system-tables-to-system-views-transact-sql --查询得到数据库的名字
Select name,dbid from master.sys.sysdatabases
GO --表中的每条记录都对应着数据库中的数据文件或日志文件的一次备份信息。表中的字段说明了备份时文件的属性。通俗的说,是备份文件的详细表。 SELECT * FROM [msdb].[dbo].backupfile
GO
---[compressed_backup_size],
SELECT TOP 1000 [backup_set_id],a.[media_set_id],[expiration_date],[name],[user_name],[software_major_version],[backup_start_date],[backup_finish_date],[type],[compatibility_level], [backup_size],[database_name] ,[server_name], [is_password_protected],[recovery_model],[is_damaged] ,[begins_log_chain], b.physical_device_name FROM [msdb].[dbo].[backupset] a,[msdb].[dbo].[backupmediafamily] b where a.media_set_id=b.media_set_id order by backup_set_id desc
GO --备份时,数据库中的每个文件组占一行。
SELECT * FROM [msdb].[dbo].backupfilegroup --每个媒体簇在表中占一行。如果媒体簇驻留在镜像媒体集中,则对于媒体集中的每个镜像服务器,该媒体簇都具有一个单独的行。该表存储在 msdb 数据库中。媒体簇,即备份后的物理文件。
backupmediafamily --每个备份媒体集在表中占一行
SELECT * FROM [msdb].[dbo].backupmediaset --每个备份媒体集在表中占一行 SELECT * FROM [msdb].[dbo].backupset
--
select top 150 a.run_date,a.run_time, b.name,step_id,step_name,a.message,a.run_status,a.run_duration
from msdb.dbo.sysjobhistory a ,msdb.dbo.sysjobs b
where a.job_id=b.job_id and name not in('job_exclude') and a.step_id>0
order by run_date DESC
GO --记录当前 SQL Server 代理作业活动和状态。
SELECT * FROM [msdb].[dbo].sysjobactivity --sysjobhistory 表 包含有关 SQL Server 代理执行预定作业的信息 通俗易懂的说,就是记录 job 执行的历史情况,该表比较有用,能查看job执行的时间、状态、完成信息等。
SELECT * FROM [msdb].[dbo].sysjobhistory --SQL Server 代理执行的各个预定作业的信息 sysjobs 表 SELECT * FROM [msdb].[dbo].sysjobs --sysjobservers 表 MSDN:存储特定作业与一个或多个目标服务器的关联或关系。 SELECT * FROM [msdb].[dbo].sysjobservers --sysjobschedules 表 job(作业)下次执行的时间信息 --塗聚文
SELECT * FROM [msdb].[dbo].sysjobschedules
--sysjobsteps 表 包含 SQL Server 代理要执行的作业中的各个步骤的信息。
SELECT * FROM [msdb].[dbo].sysjobsteps --sysjobstepslogs 表 包含所有 SQL Server 代理作业步骤的作业步骤日志,这些作业步骤配置为将作业步骤输出写入表中 SELECT * FROM [msdb].[dbo].sysjobstepslogs ---Sql Server 查看所有存储过程或视图的位置及内容 涂聚文 Geovin Du
select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b
where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in ('P','V','AF')
order by a.[name] asc
GO
SELECT * FROM Sys.Sql_Modules
GO
sql server:查詢系統表的更多相关文章
- oracle系統表、數據字典介紹與日常問題診斷
oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...
- SQL Server中查询数据库及表的信息语句
/* -- 本文件主要是汇总了 Microsoft SQL Server 中有关数据库与表的相关信息查询语句. -- 下面的查询语句中一般给出两种查询方法, -- A方法访问系统表,适应于SQL 20 ...
- Sql Server中不常用的表运算符之UNPIVOT
在Sql Server中不常用的表运算符之PIVOT中,介绍了PIVOT表运算符,现在来说说与之相对应的另一个表运算符UNPIVOT. 从名字可以看出,这个运算符的作用与PIVOT刚好相反,是将一行的 ...
- Sql Server中不常用的表运算符之APPLY(2)
在Sql Server中不常用的表运算符之APPLY(1)中提到,SQL2005中新支持的APPLY的特性:1.可以直接将表表达式(表值函数或者子查询)作为APPLY语句的右表连接左表.2.由于使用A ...
- SQL Server查询性能优化——堆表、碎片与索引(二)
本文是对 SQL Server查询性能优化——堆表.碎片与索引(一)的一些总结. 第一:先对 SQL Server查询性能优化——堆表.碎片与索引(一)中的例一的SET STATISTICS IO之 ...
- Sql server 浅谈用户定义表类型
1.1 简介 SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的 ...
- SQL Server 2008 查询所有用户表
SQL Server 2008 查询所有用户表的T-SQL语句是: SELECT * FROM sysobjects WHERE [xtype] = 'U' 或者是: SELECT * FROM sy ...
- SQL Server中的临时表和表变量
SQL Server中的临时表和表变量 作者:DrillChina出处:blog2008-07-08 10:05 在SQL Server的性能调优中,有一个不可比拟的问题:那就是如何在一段需要长时间的 ...
- 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步
原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...
随机推荐
- docker中gitlab-runner配置
1.启动gitlab-runner docker run -d --name gitlab-runner --restart always \ -v /opt/data/gitlab-runner/c ...
- Android Service用法知识点的讲解
Android Service 学习Service相关知识点: android service 的基础知识,生命周期,service分类,运行地点(本地服务,远程服务),运行类型(前台服务,后台服务) ...
- 夜谈Java类的定义
女孩:谈Java了,好耶? 男孩:夜谈一下,Java的类的定义~ 女孩:那谈Java的类的什么呢? 男孩:类的定义,对象的定义,类中的方法,构造方法,this关键字,方法的重载,Java中的类的访问权 ...
- WCF绑定netTcpBinding寄宿到IIS
继续沿用上一篇随笔中WCF服务类库 Wettery.WcfContract.Services WCF绑定netTcpBinding寄宿到控制台应用程序 服务端 添加WCF服务应用程序 Wettery. ...
- 关于No mapping found for HTTP request with URI...
当你看到这篇博客,说明你已经像我一样快疯了!但是还好..找到了!!! 网上的那些东西真心看了更闹心,因为还没解决... 原因一.访问路径确实错了,导致Dispatcher找不到给你传达的地方,修改下领 ...
- 【不遮遮掩掩】Github上传本地代码以及常见问题解决方案
2019.20.18更新: 把完整命令打一遍吧,不然看完太累了不是 //初始化文件夹 git init //初始化目录,把基本文件下载下来,如ignore文件 git pull --rebase or ...
- javascript 最全面的数组操作合集
一.数组添加.删除.替换.截取操作 1.arr.unshift(1) 在数组头部添加一个元素 1 (直接改变原数组,返回值为添加元素后数组的length) 2.arr.shift() 在数组的头部删除 ...
- Thymeleaf教程入门到深入1:基础介绍
1 介绍 1.1 简介 Thymeleaf是一个用于Web和独立Java环境的模板引擎,能够处理HTML.XML.JavaScript.CSS甚至纯文本.能轻易的与Spring MVC等Web框架进行 ...
- mint-ui Infinite scroll 重复加载、加载无效的原因及解决方案
1.无限滚动的运用场景: 一般运用在列表展示,有分页.下拉加载更多的需求中. 2.代码分析 代码很简单,实现了列表分页,数据加载完之后显示数据状态 <template> <div c ...
- 可以用软连接的方式解决linux内存空间不足的问题
突然提示说/var空间满了,然后接着系统卡死,最后彻底没辙,重启试试,没想到提示什么系统错误,请联系管理员之类的提示语,也进不去登陆界面啥了.之后用其他电脑连接SSH用root账号访问. # cd / ...