常用的sql语句

Arthit 于 2024-08-11 发布

分组取第一条数据

select * from (select row_number() over(partition by ID order by ID) as rownum , * from table) as temp where temp.rownum = 1

分组后,以逗号分割拼接某字段

SELECT  SharerintName ,ProdCode = STUFF(( SELECT   ',' + CONVERT(nvarchar,Id) FROM AA_PrinterInfo a 
WHERE a.SharerintName = b.SharerintName FOR XML PATH('') ), 1,1, '') FROM AA_PrinterInfo b GROUP BY SharerintName

添加字段和描述

if COL_LENGTH('FC_JobTask','DeferCPIsFinished') is null
begin
alter table FC_JobTask add [DeferCPIsFinished] bit DEFAULT 0 NOT NULL
exec sp_addextendedproperty N'MS_Description', N'暂缓工序完工否', N'user', N'dbo', N'table', N'FC_JobTask', N'column', N'DeferCPIsFinished'
end

--更新描述
exec sp_updateextendedproperty N'MS_Description', N'状态:0 待审核', N'user', N'dbo', N'table', N'PO_SellOrderDetail', N'column', N'State'

日志收缩与备份

--查询数据库文件信息
USE [JStandard];
GO
EXEC sp_helpfile;

--完整恢复模式 FULL
--简单恢复模式 SIMPLE
--大容量日志恢复模式 recovery_model_desc
SELECT recovery_model_desc FROM sys.databases WHERE name = 'JStandard';

-- 根据情况是否先进行完整备份
-- 日志备份只能在数据库已经进行过完整备份之后才会被允许。
--BACKUP DATABASE JStandard TO DISK = '/var/opt/mssql/data/JStandard_full_backup.bak';

----备份日志
BACKUP LOG [JStandard] TO DISK = 'D:\Backup\JStandard_log_backup.trn';

--收缩日志,单位:M
DBCC SHRINKFILE (N'JStandard_log', 1024);

--修改文件的 MAXSIZE
ALTER DATABASE [JStandard]
MODIFY FILE (NAME = N'JStandard_log', MAXSIZE = 1536MB);

--将数据库恢复模式设置为简单恢复模式
ALTER DATABASE JStandard SET RECOVERY SIMPLE;

-- 数据库恢复模式为完整恢复模式的时候先截断日志,再搞个脚本定时截断。
----备份日志
--BACKUP LOG [JStandard] TO DISK = 'D:\Database\JStandard_log_backup.trn';

----SQL Server 作业
--DECLARE @LogSize INT;

---- 获取日志文件的当前大小(单位:KB)
--SELECT @LogSize = size * 8 / 1024
--FROM sys.master_files
--WHERE database_id = DB_ID('你的数据库名') AND type_desc = 'LOG';

---- 如果日志文件超过 500MB(500MB = 500 * 1024 KB),则执行日志备份
--IF @LogSize > 500
--BEGIN
--    BACKUP LOG [你的数据库名] TO DISK = 'D:\备份\日志备份.trn';
--END

分享一个MV

EXO组合的咆哮