SQL server相关语句

论坛 期权论坛 脚本     
匿名技术用户   2021-1-14 14:39   1121   0
-- 查询死锁
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName 
from sys.dm_tran_locks 
where resource_type='OBJECT'

-- 杀死死锁
kill 147

GO

--查询库中表的行数 打印大于0行的表名和行数

DECLARE @TableName VARCHAR(128)

Declare PostCur Cursor For

SELECT name FROM sys.tables

Open PostCur

Fetch next From PostCur Into @TableName

While @@fetch_status=0

Begin

DECLARE @ct INT

SET @ct=0

DECLARE @strSQL NVARCHAR(500)

SET @strSQL='Select @ct=Count(1) From '+@TableName

exec sp_executesql @strSQL,N'@ct int output',@ct OUTPUT

IF(@ct>0)

BEGIN

print '表名 '+@TableName

PRINT '数据条数 '+Convert(varchar(32),@ct)

END

Fetch next From PostCur Into @TableName

End

Close PostCur

Deallocate PostCur

----------------------------------------

--查询数据库总各表数据量

GO

CREATE TABLE #tbles(ID int IDENTITY(1,1),TableName varchar(128)

,IsHandle bit DEFAULT('False')

,TableRowCount int DEFAULT(0))

INSERT INTO #tbles(TableName)

SELECT name FROM sys.tables

DECLARE @TableName varchar(128)

DECLARE @ID int

SET @ID=0

SELECT TOP 1 @ID=ID,@TableName=TableName FROM #tbles WHERE IsHandle='False'

WHILE(@ID!=0)

BEGIN

DECLARE @isexists bit

DECLARE @RowCount int

DECLARE @SqlStr nvarchar(1000)

SET @SqlStr='SELECT @RowCount=Count(1) FROM '+@TableName

exec sp_executesql @SqlStr

,N'@RowCount int output',@RowCount OUTPUT

UPDATE #tbles SET IsHandle='True',TableRowCount=@RowCount WHERE TableName=@TableName

Print @RowCount

PRINT @TableName

SET @ID=0

SET @RowCount=0

SET @SqlStr=''

SELECT TOP 1 @ID=ID,@TableName=TableName FROM #tbles WHERE IsHandle='False'

END

SELECT * FROM #tbles

Drop Table #tbles

------------------------------------------------------------------------

---查询存储过程返回结果

GO

create proc getdata2

as

select 1 as r1,2 as r2

GO

create table #temp(r1 int,r2 int)

insert into #temp exec getdata2

select * From #temp

drop table #temp

------------------------------------------------------------------------

----查询生成拼接字符串

Go

create table #temp1(c1 int)

insert into #temp1(c1)Values(1)

insert into #temp1(c1)Values(2)

insert into #temp1(c1)Values(3)

insert into #temp1(c1)Values(4)

GO

Select c1 From #temp1 for xml path('')

Select c1 as [data()] From #temp1 for xml path('')

Select Convert(varchar(10),c1) +',' From #temp1 for xml path('')

declare @str varchar(max)

select @str=(Select Convert(varchar(10),c1) +',' From #temp1 for xml path(''))

select @str

------------------------------------------------------------------------

--获取随机字符串

GO

CREATE VIEW [dbo].[V_RAND]

AS

SELECT RAND1 = CONVERT(INT,RAND()*26),RAND2 = RAND()*2

GO

Create FUNCTION [dbo].[f_GetRandStr](@LEN INT,@FLAG INT)

RETURNS NVARCHAR(100)

AS

--@LEN 输出字符的长度

--@FLAG 返回值包含字符 1:大写字母 2:小写字母 3:大小写字母混合

BEGIN

DECLARE @SQL NVARCHAR(100),@RAND INT

SELECT @SQL = ''

IF @LEN>100

SET @LEN = 100

WHILE @LEN>0

BEGIN

SELECT @RAND = RAND1 +(CASE @FLAG WHEN 1 THEN 65 WHEN 2 THEN 97

ELSE(CASE WHEN RAND2 > 1 THEN 97 ELSE 65 END) END)

FROM V_RAND

SELECT @SQL=@SQL + CHAR(@RAND),@LEN = @LEN - 1

END

RETURN @SQL

END

GO

Select dbo.f_GetRandStr(30,3)

----------------------------------------

--简单的传参输出

GO

declare @i3 int

exec sp_executesql N'Select @i3=@i1+@i2',N'@i1 int,@i2 int,@i3 int output',1,22,@i3 output

Select @i3

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP