sql系统中的存储过程,从中可以找到查询各种信息的语句

简介: create procedure sys.sp_help @objname nvarchar(776) = NULL -- object name we're after as -- PRELIMINARY set...
create procedure sys.sp_help  
 @objname nvarchar(776) = NULL  -- object name we're after  
as  
 -- PRELIMINARY  
 set nocount on  
 declare @dbname sysname  
  ,@no varchar(35), @yes varchar(35), @none varchar(35)  
 select @no = 'no', @yes = 'yes', @none = 'none'  
  
 -- If no @objname given, give a little info about all objects.  
 if @objname is null  ----传入空值
 begin  
  -- DISPLAY ALL SYSOBJECTS --  
        select  
            'Name'          = o.name,  
            'Owner'         = user_name(ObjectProperty( object_id, 'ownerid')),  
            'Object_type'   = substring(v.name,5,31)  
        from sys.all_objects o, master.dbo.spt_values v  
        where o.type = substring(v.name,1,2) collate database_default and v.type = 'O9T'  
        order by [Owner] asc, Object_type desc, Name asc  
  
  print ' '  
  
  -- DISPLAY ALL USER TYPES  
  select  
   'User_type' = name,  
   'Storage_type' = type_name(system_type_id),  
   'Length'  = max_length,  
   'Prec'  = Convert(int,TypePropertyEx(user_type_id, 'precision')),  
   'Scale'  = Convert(int,TypePropertyEx(user_type_id, 'scale')),  
   'Nullable'  = case when is_nullable = 1 then @yes else @no end,  
   'Default_name' = isnull(object_name(default_object_id), @none),  
   'Rule_name'  = isnull(object_name(rule_object_id), @none),  
   'Collation'  = collation_name  
  from sys.types  
  where user_type_id > 256  
  order by name  
  
  return(0)  
 end  
  
 -- Make sure the @objname is local to the current database.  
 select @dbname = parsename(@objname,3)  
 if @dbname is null  
  select @dbname = db_name()  
 else if @dbname <> db_name()  
  begin  
   raiserror(15250,-1,-1)  
   return(1)  
  end  
  
 -- @objname must be either sysobjects or systypes: first look in sysobjects  
 declare @objid int  
 declare @sysobj_type char(2)  
 select @objid = object_id, @sysobj_type = type from sys.all_objects where object_id = object_id(@objname)  
  
 -- IF NOT IN SYSOBJECTS, TRY SYSTYPES --  
 if @objid is null  
 begin  
  -- UNDONE: SHOULD CHECK FOR AND DISALLOW MULTI-PART NAME  
  select @objid = type_id(@objname)  
  
  -- IF NOT IN SYSTYPES, GIVE UP  
  if @objid is null  
  begin  
   raiserror(15009,-1,-1,@objname,@dbname)  
   return(1)  
  end  
  
  -- DATA TYPE HELP (prec/scale only valid for numerics)  
  select  
   'Type_name' = name,  
   'Storage_type' = type_name(system_type_id),  
   'Length'  = max_length,  
   'Prec'   = Convert(int,TypePropertyEx(user_type_id, 'precision')),  
   'Scale'   = Convert(int,TypePropertyEx(user_type_id, 'scale')),  
   'Nullable'   = case when is_nullable=1 then @yes else @no end,  
   'Default_name' = isnull(object_name(default_object_id), @none),  
   'Rule_name'  = isnull(object_name(rule_object_id), @none),  
   'Collation'  = collation_name  
  from sys.types  
  where user_type_id = @objid  
  
  return(0)  
 end  
  
 -- FOUND IT IN SYSOBJECT, SO GIVE OBJECT INFO  
 select  
  'Name'    = o.name,  
  'Owner'    = user_name(ObjectProperty( object_id, 'ownerid')),  
        'Type'              = substring(v.name,5,31),  
  'Created_datetime' = o.create_date  
 from sys.all_objects o, master.dbo.spt_values v  
 where o.object_id = @objid and o.type = substring(v.name,1,2) collate database_default and v.type = 'O9T'  
  
 print ' '  
  
 -- DISPLAY COLUMN IF TABLE / VIEW  
 if exists (select * from sys.all_columns where object_id = @objid)  
 begin  
  
  -- SET UP NUMERIC TYPES: THESE WILL HAVE NON-BLANK PREC/SCALE  
  declare @numtypes nvarchar(80)  
  select @numtypes = N'tinyint,smallint,decimal,int,real,money,float,numeric,smallmoney'  
  
  -- INFO FOR EACH COLUMN  
  print ' '  
  select  
   'Column_name'   = name,  
   'Type'     = type_name(user_type_id),  
   'Computed'    = case when ColumnProperty(object_id, name, 'IsComputed') = 0 then @no else @yes end,  
   'Length'     = convert(int, max_length),  
   'Prec'     = case when charindex(type_name(system_type_id), @numtypes) > 0  
          then convert(char(5),ColumnProperty(object_id, name, 'precision'))  
          else '     ' end,  
   'Scale'     = case when charindex(type_name(system_type_id), @numtypes) > 0  
          then convert(char(5),OdbcScale(system_type_id,scale))  
          else '     ' end,  
   'Nullable'    = case when is_nullable = 0 then @no else @yes end,  
   'TrimTrailingBlanks' = case ColumnProperty(object_id, name, 'UsesAnsiTrim')  
          when 1 then @no  
          when 0 then @yes  
          else '(n/a)' end,  
   'FixedLenNullInSource' = case  
      when type_name(system_type_id) not in ('varbinary','varchar','binary','char')  
       then '(n/a)'  
      when is_nullable = 0 then @no else @yes end,  
   'Collation'  = collation_name  
  from sys.all_columns where object_id = @objid  
  
  -- IDENTITY COLUMN?  
  if @sysobj_type in ('S ','U ','V ','TF') and @objid > 0  
  begin  
   print ' '  
   declare @colname sysname  
   select @colname = col_name(@objid, column_id) from sys.identity_columns where object_id = @objid  
   select  
    'Identity'    = isnull(@colname,'No identity column defined.'),  
    'Seed'    = ident_seed(@objname),  
    'Increment'   = ident_incr(@objname),  
    'Not For Replication' = ColumnProperty(@objid, @colname, 'IsIDNotForRepl')  
   -- ROWGUIDCOL?  
   print ' '  
   select @colname = null  
   select @colname = name from sys.columns where object_id = @objid and is_rowguidcol = 1  
   select 'RowGuidCol' = isnull(@colname,'No rowguidcol column defined.')  
  end  
 end  
  
 -- DISPLAY ANY PARAMS  
 if exists (select * from sys.all_parameters where object_id = @objid)  
 begin  
  -- INFO ON PROC PARAMS  --查询存储过程参数--object_id=object_id(@TableName)
  print ' '  
  select  
   'Parameter_name' = name,  
   'Type'   = type_name(user_type_id),  
   'Length'   = max_length,  
   'Prec'   = case when type_name(system_type_id) = 'uniqueidentifier' then precision  
        else OdbcPrec(system_type_id, max_length, precision) end,  
   'Scale'   = OdbcScale(system_type_id, scale),  
   'Param_order'  = parameter_id,  
   'Collation'   = convert(sysname, case when system_type_id in (35, 99, 167, 175, 231, 239)  
      then ServerProperty('collation') end)  
  
  from sys.all_parameters where object_id = @objid  
 end  
  
 -- DISPLAY TABLE INDEXES & CONSTRAINTS  
 if @sysobj_type in ('S ','U ')  
 begin  
  print ' '  
  EXEC sys.sp_objectfilegroup @objid  
  print ' '  
  EXEC sys.sp_helpindex @objname  
  print ' '  
  EXEC sys.sp_helpconstraint @objname,'nomsg'  
  if (select count(*) from sysdepends where depid = @objid and deptype = 1) = 0  
  begin  
   raiserror(15647,-1,-1,@objname) -- No views with schemabinding reference table '%ls'.  
  end  
  else  
  begin  
            select distinct 'Table is referenced by views' = obj.name from sys.objects obj, sysdepends deps  
    where obj.type ='V' and obj.object_id = deps.id and deps.depid = @objid  
     and deps.deptype = 1 group by obj.name  
  
  end  
 end  
 else if @sysobj_type in ('V ') and @objid > 0  
 begin  
  -- VIEWS DONT HAVE CONSTRAINTS, BUT PRINT THESE MESSAGES BECAUSE 6.5 DID  
  print ' '  
  raiserror(15469,-1,-1,@objname) -- No constraints defined  
  print ' '  
  raiserror(15470,-1,-1,@objname) -- No foreign keys reference table '%ls'.  
  EXEC sys.sp_helpindex @objname  
 end  
  
 return (0) -- sp_help  

sp_help null

相关文章
|
8月前
|
SQL Web App开发 安全
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
486 0
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
|
9月前
|
SQL 容灾 安全
云时代SQL Server的终极答案:阿里云 RDS SQL Server如何用异地容灾重构系统可靠性
在数字化转型的浪潮中,数据库的高可用性已成为系统稳定性的生命线。作为经历过多次生产事故的资深开发者,肯定深知传统自建SQL Server架构的脆弱性——直到遇见阿里云 RDS SQL Server,其革命性的异地容灾架构彻底改写了游戏规则。
|
10月前
|
SQL Web App开发 安全
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
936 0
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
|
SQL 存储 测试技术
SQL在构建系统中的应用:关键步骤与技巧
在构建基于数据库的应用系统时,SQL(Structured Query Language)作为与数据库交互的核心语言,扮演着至关重要的角色
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
422 1
|
12月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
822 11
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
4691 11
|
SQL Java
使用java在未知表字段情况下通过sql查询信息
使用java在未知表字段情况下通过sql查询信息
248 8
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
1046 1