日度归档:2019年9月2日

mssql sqlserver 如何获取当前sql进程运行的数据库名称呢?


摘要:
当sql脚本运行出现一些某名奇妙的错误问题时,此时我们不知道如何下手处理异常时,我觉得这时,应该冷静下来,检查以下运行脚本所属的数据库,
然后再从数据库上依次模拟运行sql脚本信息。
下文将讲述一种获取当前进程所属数据库的方法,如下所示:


实现思路:
通过运用@@spid系统变量和 系统表sysprocesses、sysdatabases获取相关信息

 
select name as [数据库名称]  
 from master..SysDataBases
   where dbId=(Select dbid From master..sysprocesses Where spid = @@spid)

mssql_sqlserver_获取进程所属数据库的方法_9595

mssql_sqlserver_获取进程所属数据库的方法_9595


相关阅读:
mssql sqlserver @@SPID 关键字简介
sys.sysprocesses 系统表简介

mssql sqlserver 查找用户自定义存储过程中包含特定字符的方法


摘要:
在日常工作中,我们经常遇到一个问题:“需要检索哪些存储过程包含某某列或某某变量”这样的需求,那么下文就介绍一种检索存储过程内容的方法分享


实现思路:
1. 通过检索 syscomments 表中的text字段中的内容达到检索存储过程内容的目的
2. 通过检索 INFORMATION_SCHEMA.ROUTINES 表中 ROUTINE_DEFINITION列达到检索存储过程的目的

----检索存储过程包含 "maomao365" 这几个字符 
go
create proc pr_test
as
begin  print 'maomao365.com'   end
go
select name  as [存储过程名称]
from sysobjects o, syscomments s 
where o.id = s.id 
and text like '%maomao365%' 
and o.xtype = 'P' 

 
SELECT ROUTINE_NAME as [存储过程名称],
ROUTINE_DEFINITION  as [存储过程内容]
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%maomao365%' 
AND ROUTINE_TYPE='PROCEDURE'
go
drop proc pr_test 
mssql_sqlserver_存储过程包含字符检索方法_9592

mssql_sqlserver_存储过程包含字符检索方法_9592

mssql sqlserver 使用sql脚本计算数据列的百分比的方法分享


摘要:
下文讲述sqlserver中使用脚本计算数据列占”此列总数据”的百分比的方法分享,如下所示:
实验环境:sql server 2008 R2


例:
求下表中“列A”占“列A和”的百分比,具体方法如下:

  create table [maomao365.com]
(keyId int identity,
 a    int)
 go
 insert into [maomao365.com](a)
 values(5),(6),(7),(8),
 (10),(2),(3),(15),(21),(3)
 go

 select keyId,a,left(convert(varchar(100),
               (
			     a/convert(decimal(18,4),a_All)
			    )*100)
			    ,4)+'%' from 
 (
 select keyId,a,sum(a) over() as a_All from [maomao365.com]
 ) as t 

 go
 truncate table [maomao365.com]
 drop     table [maomao365.com]
mssql_sqlserver_列占比计算方法_9589

mssql_sqlserver_列占比计算方法_9589