kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

mysql general_log 记录执行记录

https://blog.csdn.net/weixin_39525812/article/details/116102654

http://blog.claves.cn/archives/5929

介绍

开启 general log 将所有到达MySQL Server的SQL语句记录下来。

一般不会开启开功能,因为log的量会非常庞大。但个别情况下可能会临时的开一会儿general log以供排障使用。

相关参数一共有3:general_log、log_output、general_log_file

1
2
3
4
5
6
7
8
9
show variables like 'general_log_file';       -- 看看日志文件保存位置
set global general_log_file='tmp/general.lg'; -- 设置日志文件保存位置

show variables like 'general_log';  -- 查看日志是否开启
set global general_log=on;          -- 开启日志功能

show variables like 'log_output';   -- 看看日志输出类型 table或file
set global log_output='table';      -- 设置输出类型为 table
set global log_output='file';       -- 设置输出类型为file

log_output = ‘FILE’ 表示将日志存入文件,默认值是FILE

log_output = ‘TABLE’ 表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中.

mysql查看正在执行的sql语句

1
show processlist;

mysql查看是否开启日志模式

1
2
3
show variables like '%log_output%';

show variables like '%general_log%';

保存到table

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 日志开启
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';

-- 查询
SELECT * from mysql.general_log ORDER BY event_time DESC;

-- 清空表
truncate table mysql.general_log;

-- 日志关闭
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'OFF';

SQLServer查询执行过的SQL记录

https://blog.csdn.net/zbc415766331/article/details/113924487

说明:仅支持sql server2008及以上版本

通过下面的SQL语句可以查看Sqlserver执行的SQL记录,常用于SQL优化及辅助查找数据更新相关功能bug。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT TOP 1000
	ST.text AS '执行的SQL语句',
	QS.execution_count AS '执行次数',
	QS.total_elapsed_time AS '耗时',
	QS.total_logical_reads AS '逻辑读取次数',
	QS.total_logical_writes AS '逻辑写入次数',
	QS.total_physical_reads AS '物理读取次数',
	QS.creation_time AS '执行时间' ,  
	QS.*
FROM sys.dm_exec_query_stats QS
	CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE  QS.creation_time >'2020-08-18'
ORDER BY
	QS.total_elapsed_time DESC

关键SQL信息查询测试

1
2
3
4
5
6
7
8
9
10
SELECT TOP 1000
	ST.text AS '执行的SQL语句',
	QS.total_elapsed_time AS '耗时',
	QS.creation_time AS '执行时间' 
FROM sys.dm_exec_query_stats QS
	CROSS APPLY
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE QS.creation_time >'2021-02-18 15:00' AND QS.creation_time <'2021-02-18 23:00'
ORDER BY
	QS.total_elapsed_time DESC

sp_addlinkedserver 远程数据库链接

https://www.cnblogs.com/qi123/p/9061008.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--查看当前链接情况:
select * from sys.servers;

--使用 sp_helpserver 来显示可用的服务器
exec sp_helpserver

--删除已经存在的某个链接
exec sp_droplinkedsrvlogin 服务器别名,Null
exec sp_dropserver 服务器别名

--使用sp_addlinkedserver来增加链接
exec sp_addlinkedserver
@server='192.168.2.66',  --被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY)
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.2.66'  --要访问的服务器

--使用sp_addlinkedsrvlogin 来增加用户登录链接
exec sp_addlinkedsrvlogin
'192.168.2.66', --被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY)
'false', NULL,
'sa', --帐号
'test123' --密码

使用举例(访问目标服务器上的数据库Music,查看其中表test的内容):

如果建立链接时的别名是目标服务器IP,即192.168.2.66 则:
select * from [192.168.2.66].[Music].dbo.test

如果建立链接时的别名是JOY, 则:
select * from [JOY].[Music].dbo.test
1
2
3
4
5
6
7
8
9
可能会遇到的问题:
exec sp_dropserver 'JOY'执行失败,

报错信息:仍有对服务器 'JOY' 的远程登录或链接登录。

解决方法:
exec sp_droplinkedsrvlogin 'JOY',null

exec sp_dropserver 'JOY'
1
2
3
4
5
6
7
8
9
10
11
12
select * from sys.servers;

exec sp_helpserver

exec sp_dropserver 'QPAccountsDBLink'

EXEC sp_addlinkedserver
@server='XFGameWebLink', --被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY)
@srvproduct='XFGameWebLink',
@provider='SQLOLEDB',
@datasrc='127.0.0.1',    --要访问的服务器
@catalog='QPWXFGame'
1
2
3
EXEC sp_addlinkedserver @server='NC',@srvproduct='',@provider='SQLOLEDB',@datasrc='192.168.1.1'

EXEC sp_addlinkedsrvlogin 'NC','false',NULL,'lx','xxx'