SQLServer常用sql记录

查看备份恢复任务进度

SELECT req.session_id, 
	database_name = db_name(req.database_id),
	req.status,
	req.blocking_session_id, 
	req.command,
	[sql_text] = Substring(txt.TEXT, (req.statement_start_offset / 2) + 1, (
				(
					CASE req.statement_end_offset
						WHEN - 1 THEN Datalength(txt.TEXT)
						ELSE req.statement_end_offset
					END - req.statement_start_offset
					) / 2
				) + 1),
	req.percent_complete,
	req.start_time,
	cpu_time_sec = req.cpu_time / 1000,
	granted_query_memory_mb = CONVERT(NUMERIC(8, 2), req.granted_query_memory / 128.),
	req.reads,
	req.logical_reads,
	req.writes,
	eta_completion_time = DATEADD(ms, req.[estimated_completion_time], GETDATE()),
	elapsed_min = CONVERT(NUMERIC(6, 2), req.[total_elapsed_time] / 1000.0 / 60.0),
	remaning_eta_min = CONVERT(NUMERIC(6, 2), req.[estimated_completion_time] / 1000.0 / 60.0),
	eta_hours = CONVERT(NUMERIC(6, 2), req.[estimated_completion_time] / 1000.0 / 60.0/ 60.0),
	wait_type,
	wait_time_sec = wait_time/1000, 
	wait_resource
FROM sys.dm_exec_requests as req WITH(NOLOCK)
	CROSS APPLY sys.dm_exec_sql_text(req.sql_handle) as txt 
WHERE req.session_id>50
	AND command IN ('BACKUP DATABASE', 'BACKUP LOG', 'RESTORE DATABASE', 'RESTORE LOG');

慢sql查询

declare @sKssj varchar(23),
        @sJssj varchar(23)
set @sKssj='2023-08-02 09:30:00.000'
set @sJssj='2023-08-02 10:30:00.000'
SELECT
(total_elapsed_time / execution_count)/1000 N'平均时间ms'
,total_elapsed_time/1000 N'总花费时间ms'
,total_worker_time/1000 N'所用的CPU总时间ms'
,total_physical_reads N'物理读取总次数'
,total_logical_reads/execution_count N'每次逻辑读次数'
,total_logical_reads N'逻辑读取总次数'
,total_logical_writes N'逻辑写入总次数'
,execution_count N'执行次数'
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) N'执行语句'
,creation_time N'语句编译时间'
,last_execution_time N'上次执行时间'
FROM
sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st
WHERE
SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) not like '%fetch%'
and creation_time between @sKssj and @sJssj
ORDER BY 
total_elapsed_time / execution_count DESC;

重建索引

查看索引

SELECT B.NAME,A.avg_fragmentation_in_percent FROM sys.dm_db_index_physical_stats(db_id(),object_id('dbo.CTP_AFFAIR'),null,null,null) A ,sys.indexes B WHERE A.INDEX_ID=B.INDEX_ID AND A.OBJECT_ID=B.OBJECT_ID ORDER BY 2 DESC
SELECT * FROM sys.dm_db_index_physical_stats(db_id(),object_id('dbo.CTP_AFFAIR'),null,null,null) 
declare @table_id int  
set @table_id=object_id('tablename')  
dbcc showcontig(@table_id)
exec sp_helpindex 'CTP_AFFAIR'
SELECT name AS IndexName, type_desc AS IndexType
FROM sys.indexes
WHERE object_id = OBJECT_ID('TableName')

重建索引

dbcc dbreindex(tablename,'',90)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server 是一种关系型数据库管理系统,它可以用于存储和管理数据。以下是一些常用SQL Server 操作记录: 1. 创建数据库:可以使用 SQL Server Management Studio (SSMS) 或 Transact-SQL 命令来创建数据库。例如,使用 SSMS,您可以右键单击“数据库”文件夹,然后选择“新建数据库”。使用 Transact-SQL 命令,您可以使用 CREATE DATABASE 语句来创建数据库。 2. 创建表:使用 CREATE TABLE 语句创建表。例如,CREATE TABLE Employee (EmployeeID int, FirstName varchar(50), LastName varchar(50), HireDate date); 3. 插入数据:使用 INSERT INTO 语句插入数据。例如,INSERT INTO Employee (EmployeeID, FirstName, LastName, HireDate) VALUES (1, 'John', 'Doe', '2021-01-01'); 4. 更新数据:使用 UPDATE 语句更新数据。例如,UPDATE Employee SET FirstName = 'Jane' WHERE EmployeeID = 1; 5. 删除数据:使用 DELETE 语句删除数据。例如,DELETE FROM Employee WHERE EmployeeID = 1; 6. 查询数据:使用 SELECT 语句查询数据。例如,SELECT * FROM Employee; 7. 创建索引:使用 CREATE INDEX 语句创建索引。例如,CREATE INDEX IX_Employee_LastName ON Employee (LastName); 8. 备份和还原数据库:使用 SQL Server Management Studio 或 Transact-SQL 命令来备份和还原数据库。例如,使用 SSMS,您可以右键单击要备份的数据库,然后选择“任务”>“备份”。使用 Transact-SQL 命令,您可以使用 BACKUP DATABASE 和 RESTORE DATABASE 语句来备份和还原数据库。 这只是 SQL Server 中一些常用的操作记录SQL Server 还有很多其他功能和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值