在这里插入图片描述

方法一:使用sqlcmd

C:\>sqlcmd -S LAPTOP-25D4U18P -i C:\sqlserver_check_html.sql  -o C:\check\report.html -h-1 -f 65001

sqlserver_check_html.sql代码如下:

SET NOCOUNT ON;
-- 修复错误的关键设置
SET QUOTED_IDENTIFIER ON;
SET ANSI_NULLS ON;
SET ANSI_PADDING ON;
SET ANSI_WARNINGS ON;
SET CONCAT_NULL_YIELDS_NULL ON;DECLARE @html NVARCHAR(MAX) = N'';
DECLARE @report_title NVARCHAR(255) = 'SQL Server 健康检查报告';
DECLARE @servername NVARCHAR(128) = @@SERVERNAME;
DECLARE @current_time NVARCHAR(30) = CONVERT(NVARCHAR(30), GETDATE(), 120);-- 创建HTML头部
SET @html = N'<!DOCTYPE html><html><head><meta charset="UTF-8"><title>' + @report_title + N'</title><style>body{font-family:"Segoe UI",Arial,sans-serif;margin:20px;background:#f5f7fa;color:#333}.container{max-width:1200px;margin:0 auto}.header{background:linear-gradient(135deg,#0066cc,#003366);color:white;padding:25px;border-radius:8px;margin-bottom:25px;box-shadow:0 4px 12px rgba(0,0,0,0.1)}.header h1{margin:0;font-size:28px}.header p{margin:5px 0 0;opacity:0.9}.card{background:white;border-radius:8px;padding:20px;margin-bottom:20px;box-shadow:0 2px 10px rgba(0,0,0,0.05);border-left:4px solid #0066cc;transition:transform 0.3s}.card:hover{transform:translateY(-3px);box-shadow:0 5px 15px rgba(0,0,0,0.1)}.card h2{color:#0066cc;margin-top:0;padding-bottom:10px;border-bottom:1px solid #eee;font-size:20px}table{width:100%;border-collapse:collapse;margin-top:15px}th{background:#e6f2ff;text-align:left;padding:12px 15px;font-weight:600;color:#004d99}td{padding:10px 15px;border-bottom:1px solid #eee}tr:nth-child(even){background-color:#f9fbfd}tr:hover{background-color:#f0f7ff}.warning{color:#e74c3c;font-weight:600}.footer{text-align:center;margin-top:30px;padding:20px;color:#777;font-size:14px;border-top:1px solid #eee}.section-title{display:flex;align-items:center;margin-bottom:15px}.section-title:before{content:"■";color:#0066cc;margin-right:10px;font-size:18px}</style></head><body><div class="container"><div class="header"><h1>' + @report_title + N'</h1><p>服务器: ' + @servername + N' | 生成时间: ' + @current_time + N'</p></div>';-- 1. 数据库版本信息
SET @html = @html + N'<div class="card"><div class="section-title"><h2>1. 数据库版本信息</h2></div><table><tr><th>属性</th><th>值</th></tr><tr><td>SQL Server 版本</td><td>' + CAST(REPLACE(REPLACE(@@VERSION, CHAR(13), ''), CHAR(10), '<br>') AS NVARCHAR(MAX)) + N'</td></tr><tr><td>产品版本</td><td>' + CAST(SERVERPROPERTY('ProductVersion') AS NVARCHAR(128)) + N'</td></tr><tr><td>版本</td><td>' + CAST(SERVERPROPERTY('Edition') AS NVARCHAR(128)) + N'</td></tr><tr><td>Service Pack</td><td>' + CAST(SERVERPROPERTY('ProductLevel') AS NVARCHAR(128)) + N'</td></tr></table></div>';-- 2. 最大连接数
SET @html = @html + N'<div class="card"><div class="section-title"><h2>2. 最大连接数</h2></div><table><tr><th>参数</th><th>值</th></tr><tr><td>最大连接数</td><td>' + CAST(@@MAX_CONNECTIONS AS NVARCHAR(20)) + N'</td></tr></table></div>';-- 3. 活动用户会话 - 修复FOR XML PATH选项问题
DECLARE @sessions_html NVARCHAR(MAX) = N'';
SELECT @sessions_html = @sessions_html + N'<tr>' + N'<td>' + CAST(session_id AS NVARCHAR(10)) + N'</td>' +N'<td>' + ISNULL(login_name, '') + N'</td>' +N'<td>' + ISNULL(host_name, '') + N'</td>' +N'<td>' + ISNULL(program_name, '') + N'</td>' +N'<td>' + ISNULL(status, '') + N'</td>' +N'</tr>'
FROM sys.dm_exec_sessions 
WHERE is_user_process = 1;SET @html = @html + N'<div class="card"><div class="section-title"><h2>3. 活动用户会话</h2></div><table><tr><th>会话ID</th><th>登录名</th><th>主机名</th><th>程序名称</th><th>状态</th></tr>' + @sessions_html + N'</table></div>';-- 4. 数据库大小信息
DECLARE @dbsize_html NVARCHAR(MAX) = N'';
SELECT @dbsize_html = @dbsize_html + N'<tr>' + N'<td>' + d.name + N'</td>' +N'<td>' + CAST(ROUND(SUM(mf.size) * 8 / 1024.0, 2) AS NVARCHAR(20)) + N' MB</td>' +N'<td>' + d.state_desc + N'</td>' +N'<td>' + d.recovery_model_desc + N'</td>' +N'</tr>'
FROM sys.databases d
JOIN sys.master_files mf ON d.database_id = mf.database_id
GROUP BY d.name, d.state_desc, d.recovery_model_desc;SET @html = @html + N'<div class="card"><div class="section-title"><h2>4. 数据库大小信息</h2></div><table><tr><th>数据库名称</th><th>大小 (MB)</th><th>状态</th><th>恢复模式</th></tr>' + @dbsize_html + N'</table></div>';-- 5. 磁盘空间信息
CREATE TABLE #drives (drive CHAR(1), free_mb INT);
INSERT INTO #drives EXEC master.dbo.xp_fixeddrives;DECLARE @disks_html NVARCHAR(MAX) = N'';
SELECT @disks_html = @disks_html + N'<tr>' + N'<td>' + drive + N':</td>' +N'<td>' + CAST(CAST(free_mb/1024.0 AS DECIMAL(10,2)) AS NVARCHAR(20)) + N' GB</td>' +N'</tr>'
FROM #drives;DROP TABLE #drives;SET @html = @html + N'<div class="card"><div class="section-title"><h2>5. 磁盘空间信息</h2></div><table><tr><th>驱动器</th><th>可用空间 (GB)</th></tr>' + @disks_html + N'</table></div>';-- 6. 关键配置参数
DECLARE @config_html NVARCHAR(MAX) = N'';
SELECT @config_html = @config_html + N'<tr>' + N'<td>' + name + N'</td>' +N'<td>' + CAST(value AS NVARCHAR(50)) + N'</td>' +N'<td>' + CAST(value_in_use AS NVARCHAR(50)) + N'</td>' +N'</tr>'
FROM sys.configurations
WHERE name IN ('max server memory (MB)', 'min server memory (MB)', 'max degree of parallelism','cost threshold for parallelism','backup compression default'
);SET @html = @html + N'<div class="card"><div class="section-title"><h2>6. 关键配置参数</h2></div><table><tr><th>参数名</th><th>当前值</th><th>运行值</th></tr>' + @config_html + N'</table></div>';-- 7. 数据库状态概览
DECLARE @dbstatus_html NVARCHAR(MAX) = N'';
SELECT @dbstatus_html = @dbstatus_html + N'<tr>' + N'<td>' + name + N'</td>' +N'<td>' + state_desc + N'</td>' +N'<td>' + recovery_model_desc + N'</td>' +N'<td>' + CAST([compatibility_level] AS NVARCHAR(10)) + N'</td>' +N'</tr>'
FROM sys.databases;SET @html = @html + N'<div class="card"><div class="section-title"><h2>7. 数据库状态概览</h2></div><table><tr><th>数据库</th><th>状态</th><th>恢复模式</th><th>兼容级别</th></tr>' + @dbstatus_html + N'</table></div>';-- 8. 等待统计信息
DECLARE @waits_html NVARCHAR(MAX) = N'';
SELECT @waits_html = @waits_html + N'<tr>' + N'<td>' + wait_type + N'</td>' +N'<td>' + CAST(wait_time_ms AS NVARCHAR(50)) + N'</td>' +N'<td>' + CAST(waiting_tasks_count AS NVARCHAR(50)) + N'</td>' +N'</tr>'
FROM (SELECT TOP 10 wait_type, wait_time_ms, waiting_tasks_countFROM sys.dm_os_wait_statsWHERE wait_time_ms > 0ORDER BY wait_time_ms DESC
) AS waits;SET @html = @html + N'<div class="card"><div class="section-title"><h2>8. 等待统计信息 (TOP 10)</h2></div><table><tr><th>等待类型</th><th>等待时间 (ms)</th><th>等待任务数</th></tr>' + @waits_html + N'</table></div>';-- 9. CPU使用情况
SET @html = @html + N'<div class="card"><div class="section-title"><h2>9. CPU使用情况</h2></div><table><tr><th>指标</th><th>值</th></tr><tr><td>CPU繁忙时间</td><td>' + CAST(@@CPU_BUSY AS NVARCHAR(50)) + N' 毫秒</td></tr><tr><td>CPU空闲时间</td><td>' + CAST(@@IDLE AS NVARCHAR(50)) + N' 毫秒</td></tr><tr><td>总CPU时间</td><td>' + CAST(@@TIMETICKS AS NVARCHAR(50)) + N' 微秒/时钟周期</td></tr></table></div>';-- 10. 阻塞进程
DECLARE @blocks_html NVARCHAR(MAX) = N'';
SELECT @blocks_html = @blocks_html + N'<tr>' + N'<td>' + CAST(session_id AS NVARCHAR(20)) + N'</td>' +N'<td>' + CAST(blocking_session_id AS NVARCHAR(20)) + N'</td>' +N'<td>' + CAST(wait_duration_ms AS NVARCHAR(20)) + N'</td>' +N'<td>' + ISNULL(wait_type, '') + N'</td>' +N'</tr>'
FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id <> 0;SET @html = @html + N'<div class="card"><div class="section-title"><h2>10. 阻塞进程</h2></div><table><tr><th>被阻塞会话</th><th>阻塞会话</th><th>等待时间 (ms)</th><th>等待类型</th></tr>' + @blocks_html + N'</table></div>';-- 完成HTML文档
SET @html = @html + N'<div class="footer"><p>报告生成时间: ' + @current_time + N'</p><p>© SQL Server 健康检查报告 - 自动生成</p></div></div></body></html>';-- 分段输出避免截断
DECLARE @ChunkSize INT = 4000;
DECLARE @StartIndex INT = 1;
DECLARE @EndIndex INT = @ChunkSize;
DECLARE @TotalLength INT = LEN(@html);WHILE @StartIndex <= @TotalLength
BEGINIF @EndIndex > @TotalLengthSET @EndIndex = @TotalLength;PRINT SUBSTRING(@html, @StartIndex, @EndIndex - @StartIndex + 1);SET @StartIndex = @EndIndex + 1;SET @EndIndex = @StartIndex + @ChunkSize - 1;
END;

方法二:直接复制在MSSM工具执行

SET NOCOUNT ON;DECLARE @html NVARCHAR(MAX) = N''
DECLARE @report_title NVARCHAR(255) = 'SQL Server 健康检查报告'
DECLARE @servername NVARCHAR(128) = @@SERVERNAME
DECLARE @current_time NVARCHAR(30) = CONVERT(NVARCHAR(30), GETDATE(), 120)-- 创建HTML头部
SET @html = N'
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>' + @report_title + N'</title><style>body { font-family: "Segoe UI", Arial, sans-serif; margin: 20px; background: #f5f7fa; color: #333; }.container { max-width: 1200px; margin: 0 auto; }.header { background: linear-gradient(135deg, #0066cc, #003366); color: white; padding: 25px; border-radius: 8px; margin-bottom: 25px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); }.header h1 { margin: 0; font-size: 28px; }.header p { margin: 5px 0 0; opacity: 0.9; }.card { background: white; border-radius: 8px; padding: 20px; margin-bottom: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.05); border-left: 4px solid #0066cc; transition: transform 0.3s; }.card:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0,0,0,0.1); }.card h2 { color: #0066cc; margin-top: 0; padding-bottom: 10px; border-bottom: 1px solid #eee; font-size: 20px; }table { width: 100%; border-collapse: collapse; margin-top: 15px; }th { background: #e6f2ff; text-align: left; padding: 12px 15px; font-weight: 600; color: #004d99; }td { padding: 10px 15px; border-bottom: 1px solid #eee; }tr:nth-child(even) { background-color: #f9fbfd; }tr:hover { background-color: #f0f7ff; }.warning { color: #e74c3c; font-weight: 600; }.footer { text-align: center; margin-top: 30px; padding: 20px; color: #777; font-size: 14px; border-top: 1px solid #eee; }.section-title { display: flex; align-items: center; margin-bottom: 15px; }.section-title:before { content: "■"; color: #0066cc; margin-right: 10px; font-size: 18px; }</style>
</head>
<body>
<div class="container"><div class="header"><h1>' + @report_title + N'</h1><p>服务器: ' + @servername + N' | 生成时间: ' + @current_time + N'</p></div>';-- 1. 数据库版本信息
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>1. 数据库版本信息</h2></div><table><tr><th>属性</th><th>值</th></tr><tr><td>SQL Server 版本</td><td>' + CAST(@@VERSION AS NVARCHAR(500)) + N'</td></tr><tr><td>产品版本</td><td>' + CAST(SERVERPROPERTY('ProductVersion') AS NVARCHAR(128)) + N'</td></tr><tr><td>版本</td><td>' + CAST(SERVERPROPERTY('Edition') AS NVARCHAR(128)) + N'</td></tr><tr><td>Service Pack</td><td>' + CAST(SERVERPROPERTY('ProductLevel') AS NVARCHAR(128)) + N'</td></tr></table>
</div>';-- 2. 最大连接数
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>2. 最大连接数</h2></div><table><tr><th>参数</th><th>值</th></tr><tr><td>最大连接数</td><td>' + CAST(@@MAX_CONNECTIONS AS NVARCHAR(20)) + N'</td></tr></table>
</div>';-- 3. 活动用户会话
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>3. 活动用户会话</h2></div><table><tr><th>会话ID</th><th>登录名</th><th>主机名</th><th>程序名称</th><th>状态</th></tr>';DECLARE @session_id INT, @login_name NVARCHAR(128), @host_name NVARCHAR(128), @program_name NVARCHAR(128), @status NVARCHAR(30)DECLARE session_cursor CURSOR FOR
SELECT session_id, login_name, host_name, program_name, status
FROM sys.dm_exec_sessions 
WHERE is_user_process = 1OPEN session_cursor
FETCH NEXT FROM session_cursor INTO @session_id, @login_name, @host_name, @program_name, @statusWHILE @@FETCH_STATUS = 0
BEGINSET @html = @html + N'<tr><td>' + CAST(@session_id AS NVARCHAR(10)) + N'</td><td>' + ISNULL(@login_name, N'') + N'</td><td>' + ISNULL(@host_name, N'') + N'</td><td>' + ISNULL(@program_name, N'') + N'</td><td>' + ISNULL(@status, N'') + N'</td></tr>'FETCH NEXT FROM session_cursor INTO @session_id, @login_name, @host_name, @program_name, @status
ENDCLOSE session_cursor
DEALLOCATE session_cursorSET @html = @html + N'</table></div>';-- 4. 数据库大小信息
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>4. 数据库大小信息</h2></div><table><tr><th>数据库名称</th><th>大小 (MB)</th><th>状态</th><th>恢复模式</th></tr>';DECLARE @dbname NVARCHAR(128), @dbsize_mb DECIMAL(18,2), @dbstate_desc NVARCHAR(60), @recovery_model_desc NVARCHAR(60)DECLARE db_cursor CURSOR FOR
SELECT d.name,SUM(mf.size) * 8 / 1024.0,d.state_desc,d.recovery_model_desc
FROM sys.databases d
JOIN sys.master_files mf ON d.database_id = mf.database_id
GROUP BY d.name, d.state_desc, d.recovery_model_descOPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname, @dbsize_mb, @dbstate_desc, @recovery_model_descWHILE @@FETCH_STATUS = 0
BEGINSET @html = @html + N'<tr><td>' + @dbname + N'</td><td>' + CAST(ROUND(@dbsize_mb, 2) AS NVARCHAR(20)) + N' MB</td><td>' + @dbstate_desc + N'</td><td>' + @recovery_model_desc + N'</td></tr>'FETCH NEXT FROM db_cursor INTO @dbname, @dbsize_mb, @dbstate_desc, @recovery_model_desc
ENDCLOSE db_cursor
DEALLOCATE db_cursorSET @html = @html + N'</table></div>';-- 5. 磁盘空间信息 (使用替代方法)
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>5. 磁盘空间信息</h2></div><table><tr><th>驱动器</th><th>可用空间 (GB)</th></tr>';-- 使用sys.master_files估算磁盘空间
DECLARE @drive CHAR(1), @free_gb DECIMAL(10,2)CREATE TABLE #drives (drive CHAR(1) PRIMARY KEY,total_size_gb DECIMAL(10,2),used_size_gb DECIMAL(10,2)
)INSERT INTO #drives (drive, total_size_gb, used_size_gb)
SELECT LEFT(physical_name, 1) AS drive,SUM(size) * 8.0 / 1024 / 1024 AS total_size_gb,SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS BIGINT)) * 8.0 / 1024 / 1024 AS used_size_gb
FROM sys.master_files
GROUP BY LEFT(physical_name, 1)DECLARE drive_cursor CURSOR FOR
SELECT drive, total_size_gb - used_size_gb
FROM #drivesOPEN drive_cursor
FETCH NEXT FROM drive_cursor INTO @drive, @free_gbWHILE @@FETCH_STATUS = 0
BEGINSET @html = @html + N'<tr><td>' + @drive + N':</td><td>' + CAST(ROUND(@free_gb, 2) AS NVARCHAR(20)) + N' GB (估算值)</td></tr>'FETCH NEXT FROM drive_cursor INTO @drive, @free_gb
ENDCLOSE drive_cursor
DEALLOCATE drive_cursor
DROP TABLE #drivesSET @html = @html + N'</table>
<p class="warning">注意: 由于安全限制,无法获取精确的磁盘空间信息。以上为数据库文件占用空间的估算值。</p>
</div>';-- 6. 关键配置参数
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>6. 关键配置参数</h2></div><table><tr><th>参数名</th><th>当前值</th><th>运行值</th></tr>';DECLARE @config_name NVARCHAR(128), @config_value SQL_VARIANT, @value_in_use SQL_VARIANTDECLARE config_cursor CURSOR FOR
SELECT name, value, value_in_use
FROM sys.configurations
WHERE name IN ('max server memory (MB)', 'min server memory (MB)', 'max degree of parallelism','cost threshold for parallelism','backup compression default'
)OPEN config_cursor
FETCH NEXT FROM config_cursor INTO @config_name, @config_value, @value_in_useWHILE @@FETCH_STATUS = 0
BEGINSET @html = @html + N'<tr><td>' + @config_name + N'</td><td>' + CAST(@config_value AS NVARCHAR(50)) + N'</td><td>' + CAST(@value_in_use AS NVARCHAR(50)) + N'</td></tr>'FETCH NEXT FROM config_cursor INTO @config_name, @config_value, @value_in_use
ENDCLOSE config_cursor
DEALLOCATE config_cursorSET @html = @html + N'</table></div>';-- 7. 数据库状态概览
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>7. 数据库状态概览</h2></div><table><tr><th>数据库</th><th>状态</th><th>恢复模式</th><th>兼容级别</th></tr>';DECLARE @compatibility TINYINTDECLARE db_state_cursor CURSOR FOR
SELECT name, state_desc, recovery_model_desc, [compatibility_level]
FROM sys.databasesOPEN db_state_cursor
FETCH NEXT FROM db_state_cursor INTO @dbname, @dbstate_desc, @recovery_model_desc, @compatibilityWHILE @@FETCH_STATUS = 0
BEGINSET @html = @html + N'<tr><td>' + @dbname + N'</td><td>' + @dbstate_desc + N'</td><td>' + @recovery_model_desc + N'</td><td>' + CAST(@compatibility AS NVARCHAR(10)) + N'</td></tr>'FETCH NEXT FROM db_state_cursor INTO @dbname, @dbstate_desc, @recovery_model_desc, @compatibility
ENDCLOSE db_state_cursor
DEALLOCATE db_state_cursorSET @html = @html + N'</table></div>';-- 8. 等待统计信息
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>8. 等待统计信息 (TOP 10)</h2></div><table><tr><th>等待类型</th><th>等待时间 (ms)</th><th>等待任务数</th></tr>';DECLARE @wait_type NVARCHAR(60), @wait_time BIGINT, @wait_count BIGINTDECLARE wait_cursor CURSOR FOR
SELECT TOP 10 wait_type, wait_time_ms, waiting_tasks_count
FROM sys.dm_os_wait_stats
WHERE wait_time_ms > 0
ORDER BY wait_time_ms DESCOPEN wait_cursor
FETCH NEXT FROM wait_cursor INTO @wait_type, @wait_time, @wait_countWHILE @@FETCH_STATUS = 0
BEGINSET @html = @html + N'<tr><td>' + @wait_type + N'</td><td>' + CAST(@wait_time AS NVARCHAR(50)) + N'</td><td>' + CAST(@wait_count AS NVARCHAR(50)) + N'</td></tr>'FETCH NEXT FROM wait_cursor INTO @wait_type, @wait_time, @wait_count
ENDCLOSE wait_cursor
DEALLOCATE wait_cursorSET @html = @html + N'</table></div>';-- 9. CPU使用情况
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>9. CPU使用情况</h2></div><table><tr><th>指标</th><th>值</th></tr><tr><td>CPU繁忙时间</td><td>' + CAST(@@CPU_BUSY AS NVARCHAR(50)) + N' 毫秒</td></tr><tr><td>CPU空闲时间</td><td>' + CAST(@@IDLE AS NVARCHAR(50)) + N' 毫秒</td></tr><tr><td>总CPU时间</td><td>' + CAST(@@TIMETICKS AS NVARCHAR(50)) + N' 微秒/时钟周期</td></tr></table>
</div>';-- 10. 阻塞进程
SET @html = @html + N'
<div class="card"><div class="section-title"><h2>10. 阻塞进程</h2></div><table><tr><th>被阻塞会话</th><th>阻塞会话</th><th>等待时间 (ms)</th><th>等待类型</th></tr>';DECLARE @blocked_session INT, @blocking_session INT, @wait_duration BIGINT, @wait_type2 NVARCHAR(60)DECLARE block_cursor CURSOR FOR
SELECT session_id, blocking_session_id, wait_duration_ms, wait_type
FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id <> 0OPEN block_cursor
FETCH NEXT FROM block_cursor INTO @blocked_session, @blocking_session, @wait_duration, @wait_type2WHILE @@FETCH_STATUS = 0
BEGINSET @html = @html + N'<tr><td>' + CAST(@blocked_session AS NVARCHAR(20)) + N'</td><td>' + CAST(@blocking_session AS NVARCHAR(20)) + N'</td><td>' + CAST(@wait_duration AS NVARCHAR(20)) + N'</td><td>' + @wait_type2 + N'</td></tr>'FETCH NEXT FROM block_cursor INTO @blocked_session, @blocking_session, @wait_duration, @wait_type2
ENDCLOSE block_cursor
DEALLOCATE block_cursorSET @html = @html + N'</table></div>';-- 完成HTML文档
SET @html = @html + N'<div class="footer"><p>报告生成时间: ' + @current_time + N'</p><p>© SQL Server 健康检查报告 - 自动生成</p><p class="warning">注意: 由于安全限制,某些信息可能为估算值或不完整</p></div>
</div>
</body>
</html>';-- 输出HTML内容
SELECT @html AS [HTML-Report];
SELECT '由于安全限制,无法自动创建文件。请复制上方HTML内容,保存为.html文件后在浏览器中打开查看。' AS [操作说明];

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85748.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85748.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85748.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI Gateway 介绍

AI 网关和传统的 API 网关 API 网关发展 在最开始的时候&#xff0c;互联网通过电话线连接上网&#xff0c;通过“调制解调器&#xff08;Modem&#xff09;”将计算机信号和电话线信号“调制”与“调解”以实现上网功能。当今时代大多使用宽带上网&#xff0c;拨号上网已被逐…

15.3 LLaMA 3+LangChain实战:智能点餐Agent多轮对话设计落地,订单准确率提升90%!

LLaMA 3LangChain实战&#xff1a;智能点餐Agent多轮对话设计落地&#xff0c;订单准确率提升90%&#xff01; 关键词&#xff1a;多轮对话设计、场景化提示工程、LLaMA 3 微调、LangChain Agent、饭店点餐场景建模 饭店点餐场景的 Agent 方案设计 通过分层架构实现复杂场景对…

EXPLAIN优化 SQL示例

以下通过 6 个真实案例展示如何使用 EXPLAIN 优化 SQL&#xff0c;每个案例包含问题 SQL、EXPLAIN 分析、优化方案和优化后效果对比&#xff1a; 案例 1&#xff1a;全表扫描优化 (typeALL) 问题 SQL&#xff08;用户订单查询&#xff09;&#xff1a; SELECT * FROM orders …

「Linux文件及目录管理」通配符与文件名

「Linux文件及目录管理」通配符与文件名 知识点解析 通配符是Linux中用于匹配文件名的特殊字符,能高效处理批量文件操作。 常见通配符包括: *:匹配任意字符序列(包括空字符)touch a b ab a123 # 创建测试文件 ls a* # 匹配a, ab, a123?:精确匹配单个字符…

服务器配置记录

1. 获取服务器IP&#xff0c;用户&#xff0c;密码 2. 使用VS Code远程登录 下载ssh插件本地cmd执行ssh-keygen -t rsa -b 4096 -C "jt_windows"完成密钥生成。本地cmd执行type %USERPROFILE%\.ssh\id_rsa.pub查看密钥并复制。远程服务器执行以下命令&#xff1a; …

Windows 后渗透中可能会遇到的加密字符串分析

在 Windows 后渗透过程中&#xff0c;攻击者经常会遇到各种加密字符串或数据&#xff0c;这些数据通常用于存储敏感信息&#xff0c;如凭据、会话票据或配置数据。理解这些加密字符串的类型、加密机制、存储位置以及解密方法&#xff0c;对于权限提升、横向移动和持久化至关重要…

腾讯云本地专用集群CDC:混合云架构下的分布式云服务实践

摘要 在数字化转型加速的背景下&#xff0c;企业上云面临数据合规、低时延、运维复杂度等多重挑战。腾讯云本地专用集群CDC&#xff08;Cloud Dedicated Cluster&#xff09;通过融合公有云与本地IDC优势&#xff0c;提供近场云服务解决方案。本文基于IDC行业报告及技术实测数…

wpa_supplicant 源码学习

代码地址&#xff1a;git clone https://w1.fi/hostap.git 我目前学的的版本是 wpa_supplicant 2.12-devel-hostap_2_11-857-g54930b62b 五月份左右的提交&#xff0c;是较新的代码 想做白盒测试。最近开始学习 wpa_supplicant 这个工具。 自学了一个多月吧。 整理了一些代码跳…

[学习] C语言<string.h>中字符串函数全解析

C语言<string.h>中字符串函数全解析 在 C 语言中&#xff0c;字符串处理是程序开发中的重要组成部分。C 标准库 <string.h> 提供了一系列函数用于操作字符数组&#xff08;即字符串&#xff09;。这些函数以 str 开头&#xff0c;功能强大、使用广泛&#xff0c;掌…

OJ搭建:Judge0服务器、DeepSeek服务接入简介

序 各大OJ平台上有很多很好的资源&#xff0c;但作为自己的“备课本”总有各种不便&#xff0c;教学生时间久了总是有一些自己的题目和想法&#xff0c;这在教初学的学生时非常突出。所以&#xff0c;很多年前就搞了一些尝试&#xff0c;包括&#xff1a;在机房搭建ubuntu服务器…

Java的锁机制问题

锁机制 1.锁监视器 在 Java 并发编程中&#xff0c;锁监视器&#xff08;Monitor&#xff09; 是对象内部与锁关联的同步机制&#xff0c;用于控制多线程对共享资源的访问。以下是核心要点&#xff1a; &#x1f512; 监视器的核心组成 独占区&#xff08;Ownership&#xff…

老凤祥的AI智能眼镜:让智慧更近生活

在科技进步的潮流中,人工智能技术不断为我们的生活增添色彩。近日,有关字节跳动旗下的火山引擎与中国珠宝品牌老凤祥合作开发 AI 智能眼镜的消息引发了广泛关注。这款与众不同的眼镜因其独特的功能及技术支持,已经在业内引起了极大反响。 AI眼镜:老年群体的智能好帮手 根…

Kotlin 中为什么没有静态变量和静态方法—不用static?

Kotlin 的设计核心是&#xff1a; 一切皆对象&#xff1a;消除 static 的「非对象」特性&#xff0c;用 companion&#xff08;对象&#xff09;和顶层函数&#xff08;包级对象&#xff09;替代&#xff0c;让代码更统一。避免全局状态滥用&#xff1a;static 成员是全局可见…

VSCode性能调优:从卡顿到丝滑的终极方案

⚡ 核心价值 "这套配置使某金融核心系统VS Code内存占用从8GB降至1.2GB,加载速度提升15倍" —— 2024某银行效能优化报告 🧩 性能瓶颈拆解 一、百万行项目优化方案 🚀 黄金配置参数 // settings.json(核弹级优化) {"files.watcherExclude": {"…

以云织梦,渡数济世:辉瑞与亚马逊云科技共谱医药新乐章

胖头陀科技 编辑&#xff1a;沐由 【导读】“用合规的数据来帮助患者&#xff0c;成为患者回归健康的一味新药。”当下&#xff0c;在数字洪流的浪潮中&#xff0c;这味“良药”正沿着云和AI的脉络&#xff0c;奔向有需求的千家万户…… 如果说到Pfizer&#xff0c;估计十个人…

SpringBoot后端开发知识点总结(持续更新)

目录 1. 常用易混淆注解解释1.1 Resource和Autowired注解的区别1.2 PathVariable和RequestParam注解的区别 2. Mybatis-Plus高级特性2.1 强大的通用CRUD接口2.2 代码生成器 3. IDEA实用快捷键4. 前后端联调关键点4.1 代码示例4.2 联调要点4.3 调试技巧 1. 常用易混淆注解解释 …

电脑商城--用户收货管理

新增收货地址 1 新增收货地址-创建数据表 1.使用use命令先选中store数据库。 USE store; 2.在store数据库中创建t_address用户数据表。 CREATE TABLE t_address (aid INT AUTO_INCREMENT COMMENT 收货地址id,uid INT COMMENT 归属的用户id,name VARCHAR(20) COMMENT 收货人姓…

开发者避坑:接入Flux-Kontext API实现文生图、图生图功能

在数字化浪潮背景下&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;技术正加速重塑图像创作领域。智创聚合API平台近日宣布整合Flux-Kontext系列模型&#xff0c;通过API接口支持图生图和文生图功能&#xff0c;为开发者及创作者提供高效解决方案。此…

.Net Core 获取与bin目录相同文件路径的文件

在 .NET Core 中&#xff0c;您可以使用以下方法来获取与 bin 目录相同的文件路径。通常&#xff0c;bin 目录是应用程序编译后生成的输出目录&#xff0c;您可以使用 AppContext.BaseDirectory 或 Directory.GetCurrentDirectory() 来获取该目录的路径。 以下是一些常用的方法…

RN(React Native)技术应用中常出现的错误及解决办法

React Native 作为跨平台开发框架&#xff0c;在实际应用中可能会遇到一些常见的错误。以下是React Native 技术应用中常出现的错误及解决办法&#xff1a; 1. 网络请求失败&#xff08;Network Request Failed&#xff09; 原因&#xff1a; 请求地址不正确网络权限未配置i…