标签: msdb

在 msdb 上启用查询存储有什么好处?

对 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)

sql-server msdb sql-server-2016 query-store

9
推荐指数
2
解决办法
511
查看次数

可以删除 MSDB 吗?

我不是 DBA,我只是在谷歌上搜索了 MSDB 所做的事情,它基本上是其工作和历史记录的 SQL 代理的数据库,现在我的云服务器空间不足,我有 1 年的 MSDB 2017 年, 可以删除它还是保留它用于备份?

我的 MSDB 是 250GB 硬盘中的 93GB。

sql-server msdb

9
推荐指数
2
解决办法
2544
查看次数

sysschedules 数据类型选择

我很好奇,为什么 SQL Server 将msdb.dbo.sysschedules日期和时间的值保存intdatetime. 我认为原因可以追溯到 SQL Server 2000 中的某些内容。

是存储容量问题、性能问题还是其他问题?

database-design sql-server t-sql msdb

7
推荐指数
1
解决办法
133
查看次数

尝试还原数据库时出现 SSMS 错误

我们有十多个 SQL 服务器,其中一个托管数百个 sage 数据库,当我右键单击 SSMS 中的数据库节点时,延迟很长,然后我收到以下错误(并且还原对话框没有加载):

在此处输入图片说明

我认为 SSMS 正在从 msdb 或后台加载备份历史记录并且空间不足 - 这是否意味着我的系统数据库中有过多的备份历史记录?如果是这样,维护它的最佳方法是什么?

我有清理磁盘上的 trn 和 .bak 文件的维护计划,但我认为我没有维护系统数据库中的任何日志。

sql-server backup ssms sql-server-2008-r2 msdb

7
推荐指数
1
解决办法
502
查看次数

数据库 msdb 卡在恢复中

我在测试恢复备份时遇到问题(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)

返回“正在恢复”。

sql-server recovery msdb

7
推荐指数
1
解决办法
7228
查看次数

MSDB 日志文件大小

我们有一个包含 60 个数据库的 SQL Server 2008 集群。

完整备份每晚运行一次,日志备份每 15 分钟运行一次。

MSDB数据库恢复模型设置为简单(默认)。

为了能够查看这些作业的历史,我们必须设置一个清理历史日志的作业。

但是,当此作业运行时,日志文件MSDB会变大(20 - 40 GB)。

我们定期缩小日志文件,因为它有超过 80% 的“可用空间”

日志文件设置为按需增长,没有“自动收缩”

有什么办法可以避免这个日志文件增长?

我们应该启用“自动收缩”还是创建一个作业来收缩日志文件?

sql-server-2008 sql-server transaction-log msdb

6
推荐指数
1
解决办法
4824
查看次数

排序规则冲突...无法使用 dbo.sysdac_instances

将数据库迁移到具有默认排序规则 Latin1_General_CI_AS 的新 2014 服务器后,但在大多数数据库的排序规则为 Latin1_General_BIN 的情况下,尝试导入 Excel 电子表格会引发以下错误:

排序规则冲突错误消息

我已经将 sysdac_instances 跟踪到 msdb,它是一个系统视图,直接查询它会给出相同的错误。我希望有人能够指出我对这个问题的直接解决方案的方向?

奇怪的是,通过 SSMS 2008 运行导入是有效的。

sql-server collation restore msdb sql-server-2014

6
推荐指数
1
解决办法
1412
查看次数

msdb..sysjobactivity 中的 Oprhaned 条目

在这个问题中: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。其余的值看起来合理。

sql-server sql-server-2008-r2 msdb

5
推荐指数
2
解决办法
7603
查看次数

T-SQL 查询上次完整备份的日期、大小和位置

我使用下面的 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 backup t-sql msdb

3
推荐指数
1
解决办法
3万
查看次数

SQL Server 安装程序似乎将 MSDB 恢复模式重置为简单

每次我们升级 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 msdb recovery-model

2
推荐指数
1
解决办法
102
查看次数

为什么 msdb.dbo.backupset 每隔 15 分钟就会有每个数据库的条目?

我在 SQL Server 上有 134 个独立的数据库。

每 15 分钟msdb.dbo.backupset,服务器上的每个数据库的表中都会出现一个条目。

  • 为什么这种情况每 15 分钟发生一次?
  • 是什么导致这种情况发生?
  • 如何阻止这些条目发生?
  • 有没有其他人在您的 MSDB 数据库上看到此类活动?

sql-server-2008 sql-server backup msdb

0
推荐指数
1
解决办法
282
查看次数

MSDB 恢复失败并出现不同版本错误,但版本相同

尝试将 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 异常终止。

sql-server msdb sql-server-2019

-2
推荐指数
1
解决办法
47
查看次数