对 SQL 系统数据库(master、model、msdb、tempdb)的查询存储只能在 msdb 上使用。我查看并没有在 msdb 上找到任何有关查询存储的文档。
虽然您无法在 GUI 中看到它,但可以在您的 SQL 2016 实例上对其进行验证
验证查询存储已关闭
USE msdb
SELECT * FROM sys.database_query_store_options;
Run Code Online (Sandbox Code Playgroud)
打开查询存储
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = ON
GO
ALTER DATABASE msdb SET QUERY_STORE (OPERATION_MODE = READ_WRITE
, INTERVAL_LENGTH_MINUTES = 30
, MAX_STORAGE_SIZE_MB = 1000
, QUERY_CAPTURE_MODE = AUTO)
GO
Run Code Online (Sandbox Code Playgroud)
验证查询存储已开启
USE msdb
SELECT * FROM sys.database_query_store_options;
Run Code Online (Sandbox Code Playgroud)
在所有系统数据库中,为什么 msdb 是唯一一个可以选择使用查询存储的数据库,它增加了什么价值?
-- Stop Query Store
USE [master]
GO
ALTER DATABASE msdb SET QUERY_STORE = OFF
GO
Run Code Online (Sandbox Code Playgroud) 我不是 DBA,我只是在谷歌上搜索了 MSDB 所做的事情,它基本上是其工作和历史记录的 SQL 代理的数据库,现在我的云服务器空间不足,我有 1 年的 MSDB 2017 年, 可以删除它还是保留它用于备份?
我的 MSDB 是 250GB 硬盘中的 93GB。
我很好奇,为什么 SQL Server 将msdb.dbo.sysschedules
日期和时间的值保存int
为datetime
. 我认为原因可以追溯到 SQL Server 2000 中的某些内容。
是存储容量问题、性能问题还是其他问题?
我们有十多个 SQL 服务器,其中一个托管数百个 sage 数据库,当我右键单击 SSMS 中的数据库节点时,延迟很长,然后我收到以下错误(并且还原对话框没有加载):
我认为 SSMS 正在从 msdb 或后台加载备份历史记录并且空间不足 - 这是否意味着我的系统数据库中有过多的备份历史记录?如果是这样,维护它的最佳方法是什么?
我有清理磁盘上的 trn 和 .bak 文件的维护计划,但我认为我没有维护系统数据库中的任何日志。
我在测试恢复备份时遇到问题(Veritas BackUp Exec 2015,仅供您了解)。
主要问题是:我无法恢复数据库 - 在我想要恢复数据库的目标服务器上查看,SSMS 告诉我,'msdb' 数据库正在恢复。
我已经试过了:
RESTORE DATABASE MSDB WITH NORECOVERY | ...WITH RECOVERY
Run Code Online (Sandbox Code Playgroud)
该命令已执行(无错误),但什么也没发生(即使在重新启动 SQL 服务和重新启动服务器之后)。
我试图将其设置为离线,但正在运行
ALTER DATABASE MSDB SET OFFLINE
Run Code Online (Sandbox Code Playgroud)
告诉我,msdb-Database 不能设置为离线。
我需要一种方法来使 msdb 数据库脱离恢复状态。除非它无论如何都会被恢复,否则当前的数据对我来说毫无用处。有没有办法强制它退出恢复(即使它在执行命令后损坏)?
SELECT [state_desc] FROM [sys].[databases] WHERE [name] = N'msdb';
Run Code Online (Sandbox Code Playgroud)
返回“正在恢复”。
我们有一个包含 60 个数据库的 SQL Server 2008 集群。
完整备份每晚运行一次,日志备份每 15 分钟运行一次。
该MSDB
数据库恢复模型设置为简单(默认)。
为了能够查看这些作业的历史,我们必须设置一个清理历史日志的作业。
但是,当此作业运行时,日志文件MSDB
会变大(20 - 40 GB)。
我们定期缩小日志文件,因为它有超过 80% 的“可用空间”
日志文件设置为按需增长,没有“自动收缩”
有什么办法可以避免这个日志文件增长?
我们应该启用“自动收缩”还是创建一个作业来收缩日志文件?
将数据库迁移到具有默认排序规则 Latin1_General_CI_AS 的新 2014 服务器后,但在大多数数据库的排序规则为 Latin1_General_BIN 的情况下,尝试导入 Excel 电子表格会引发以下错误:
我已经将 sysdac_instances 跟踪到 msdb,它是一个系统视图,直接查询它会给出相同的错误。我希望有人能够指出我对这个问题的直接解决方案的方向?
奇怪的是,通过 SSMS 2008 运行导入是有效的。
在这个问题中:https : //stackoverflow.com/questions/18445825/how-to-know-status-of-currently-running-jobs
提出了这个答案:
SELECT sj.name
, sja.*
FROM msdb.dbo.sysjobactivity AS sja
INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id
WHERE sja.start_execution_date IS NOT NULL
AND sja.stop_execution_date IS NULL
Run Code Online (Sandbox Code Playgroud)
但是,对于我的其中一台服务器,它有一个可追溯到 10 个月前的条目。查看 SQL 代理作业活动监视器显示没有正在运行的作业。查看 msdb..sysjobs 仅显示 3 个作业。谁能解释这个现象?
孤立行的 queued_date、stop_execution_date、job_history_id 和 next_scheduled_date 为 NULL。其余的值看起来合理。
我使用下面的 T-SQL 查询来确定上次完整数据库备份的日期,并返回备份文件的大小和位置。我的问题是,对于没有备份或没有备份历史记录的数据库,它根本不会返回任何数据。理想情况下,我想修改查询以便返回所有数据库,无论它们是否有任何备份历史记录。任何人都可以建议如何修改以下查询以适应此情况?
WITH LastBackUp AS
(
SELECT bs.database_name,
bs.backup_size,
bs.backup_start_date,
bmf.physical_device_name,
Position = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC )
FROM msdb.dbo.backupmediafamily bmf
JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id
JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id
WHERE bs.[type] = 'D'
AND bs.is_copy_only = 0
)
SELECT
database_name AS [Database],
CAST(backup_size / 1048576 AS DECIMAL(10, 2) ) AS [BackupSizeMB],
backup_start_date AS [Last Full DB Backup Date],
physical_device_name AS [Backup File Location]
FROM LastBackUp
WHERE Position = …
Run Code Online (Sandbox Code Playgroud) 每次我们升级 SQL Server 安装(服务包或累积更新)时,msdb都会从 FULL 恢复模式更改为 SIMPLE 恢复模式。
我知道msdb数据库没有太大变化,并且在 SIMPLE 中使用它是很常见的,但我想知道为什么安装程序要更改它。它导致我的备份软件出错。
以下是安装日志的摘录:
2020-02-15 03:06:38.25 spid8s Starting execution of MSDB.SQL
2020-02-15 03:06:38.25 spid8s ----------------------------------
2020-02-15 03:06:38.35 spid8s Configuration option 'allow updates' changed from 0 to 1. Run the RECONFIGURE statement to install.
2020-02-15 03:06:38.35 spid8s Configuration option 'allow updates' changed from 0 to 1. Run the RECONFIGURE statement to install.
2020-02-15 03:06:38.56 spid8s Checking the size of MSDB...
2020-02-15 03:06:39.41 spid8s
2020-02-15 03:06:39.41 spid8s Setting database option …
Run Code Online (Sandbox Code Playgroud) 我在 SQL Server 上有 134 个独立的数据库。
每 15 分钟msdb.dbo.backupset
,服务器上的每个数据库的表中都会出现一个条目。
尝试将 MSDB 恢复到替换服务器并收到以下消息:
消息 3168,级别 16,状态 1,第 4 行 设备 e:\sqlbackup\2024-02-27_msdb_DEV.bak 上的系统数据库备份无法还原,因为它是由不同版本的服务器创建的 ( 15.00.4335)比该服务器(15.00.4355)。消息 3013,级别 16,状态 1,第 4 行 RESTORE DATABASE 异常终止。
msdb ×12
sql-server ×12
backup ×3
t-sql ×2
collation ×1
query-store ×1
recovery ×1
restore ×1
ssms ×1