我在 SQL Server 2016 实例上设置了中央管理服务器。我能够手动对多台服务器运行查询,但我希望能够运行自动维护脚本。
有没有办法设置一个 SQL 作业来针对所有注册的服务器运行脚本?
我在 SQL Server 2016 实例上设置了中央管理服务器。我能够手动对多台服务器运行查询,但我希望能够运行自动维护脚本。
有没有办法设置一个 SQL 作业来针对所有注册的服务器运行脚本?
我受到了挑战,因为我们的客户在运行本应在线维护的过程中遇到了不同类型的错误。超时、扫描因数据移动而停止等错误。
我们的一些客户购买了 SQL Server 企业版,以便能够获得重建索引在线功能。
为了重现这些问题,我一直在一个大型数据库上测试 dbcc checkdb,重组和重建索引以及更新统计信息,同时我在一个几乎 1TB 的数据库上使用事务轰炸服务器。
我的第一个测试是使用 maxdop=1 的 checkdb,而 sqlServer 正在处理 124000 个小事务...我从我的应用程序收到超时设置为 5 分钟。研究检查数据库的工作方式,即创建快照,密集使用 tempdb 并创建 nolocks 来创建快照......那么如果我的一个小事务不锁定表,它怎么能被阻止呢?
我的第二个测试是在处理 124000 个事务时重新组织所有索引(也应该是在线的),这次我遇到了死锁......
我的第三个测试是在运行 124000 个事务时使用 maxdop=1 更新所有统计信息。在这种情况下收到的错误是:Could not continue scan with no lock due to data move
我在运行 124000 个事务时在线重建所有索引的第四次测试将很快运行,我将用结果更新我的帖子。
我在可以使用的地方使用的 maxdop=1 是为了消除资源争用。
我已经阅读了多篇文章,其中包括 Paul Randal 对重建索引的在线与离线的解释,并了解其中的区别......但正如我所说,我面临着解释为什么它不是真正在线的挑战,尽管微软声称它是在线的.
任何输入将不胜感激。
我错过了什么
我们最近切换到 Ola Hallengren 的维护脚本,并自动将MaintenanceSolution.sql部署到客户的 SQL Server 实例。
我们需要为作业IndexOptimize - USER_DATABASES设置这些参数:
@UpdateStatistics = 'ALL'
@OnlyModifiedStatistics = 'Y'
我看到这些参数存在于MaintenanceSolution.sql中:
在我将MaintenanceSolution.sql中上述参数的值更改为
@UpdateStatistics nvarchar(max) = 'ALL'
@OnlyModifiedStatistics nvarchar(max) = 'Y'
然后执行,我在Job Step 属性 - IndexOptimize - USER_DATABASES 中看@UpdateStatistics = 'ALL'
不到或@OnlyModifiedStatistics = 'Y'
添加:
我的问题是:
我有一个特定的表,它永远占用 VACUUM。
数据库中没有锁,甚至让它一夜之间 VACUUM 也没有完成。
根据统计数据(ANALYZE 工作正常),该表的大小为 45GB,行数约为 250K。
有什么方法可以显示 VACUUM 的当前状态和/或改进它的执行方式吗?
我有一个在单个服务器上具有多个 AG 的环境,它们遇到分裂情况,其中一些最终在一个节点上,而另一些最终在另一个节点上(可能是在故障转移事件中)。当维护任务(重新索引、更新等基本范围)在这些节点上执行时,它们只会在各自 AG 的主端上的 read_write 数据库上有效地执行操作。这会导致作业失败,因为数据库在辅助节点上是只读的。因此,在分裂 AG 的情况下,两个节点都会在作业历史记录中显示维护失败。
不用说,很难监控这些集群。我提出了两种可能的管理解决方案。我们要么根据数据库的可更新性属性使用 DBCC 命令为各个数据库编写维护任务脚本,要么仅将自己限制为每台服务器一个 AG。他们不喜欢这两种解决方案。有谁知道我可以保留内置 SQL Server 维护任务并让它们仅针对主数据库的方法?
我正在测试这个新参数@DatabasesInParallel
,它似乎一次只能备份 1 个数据库,但它没有将此作为文档中的限制进行具体说明,所以我想知道我是否做错了什么。
我设置了 4 个数据库,我手动运行以下 4 个命令:
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'AdminDB',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'Pop',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_StackOverflow2010',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
EXECUTE [dbo].[DatabaseBackup]
@Databases = 'DaveTest_SUPERUSER',
@Directory = N'\\499bsl01\sqldata_test$',
@BackupType = 'FULL',
@Verify = 'Y',
@CleanupTime = 24,
@Compress = 'Y',
@CheckSum = 'Y',
@DatabasesInParallel = 'Y',
@LogToTable = 'Y',
@Execute = 'Y'
当我检查 QueueDatabase 表时,我可以看到所有 4 个数据库的 DatabaseOrder 和 RequestStartTime 列完全相同。但是,当您查看 DatabaseStartTime 列时,它显示前 2 个数据库同时启动,然后接下来的 2 个数据库直到第二个数据库完成其备份和验证检查后才启动。
这是我使用的参数的预期功能吗?我希望使用此参数同时启动所有 4 个数据库。
编辑 11/14:更新了帖子的标题/措辞
原始帖子说它一次只备份 2 个数据库,但实际上一次只备份 1 个数据库。在我的测试中备份的第一个数据库非常小,以至于我没有意识到它几乎立即完成,而第二个开始。但是你可以看到这个
我有一个在 postgresql 中有一个非常大的表的数据库。
我知道缩小磁盘大小的唯一方法是VACUUM FULL
,但我不能这样做,因为我没有足够的可用空间(这是 1TB 磁盘上的 920 GB 表,我买不起另一个 1TB SSD ATM)。
但是,我确实运行了VACUUM VERBOSE ANALYZE web_pages
,它完成了,但是表大小(如 中所报告的psql
)根本没有减小。
基本上,有没有办法在没有VACUUM FULL
或完全转储/加载的情况下缩小表?我有转储/加载的空间,但在这一点上,我预计需要一周以上的时间。
真空输出:
webarchive=# VACUUM VERBOSE ANALYZE web_pages;
INFO: vacuuming "public.web_pages"
INFO: scanned index "ix_web_pages_distance_filtered" to remove 145580643 row versions
DETAIL: CPU 4.46s/165.77u sec elapsed 324.63 sec
INFO: scanned index "ix_web_pages_netloc" to remove 145580643 row versions
DETAIL: CPU 40.65s/4686.88u sec elapsed 5387.13 sec
INFO: scanned index "ix_web_pages_priority" to remove 145580643 row versions
DETAIL: CPU 29.59s/1018.71u sec elapsed 1452.67 sec
INFO: scanned index "ix_web_pages_state" to remove 145580643 row versions
DETAIL: CPU 22.08s/303.12u sec elapsed 712.94 sec
INFO: scanned index "ix_web_pages_url" to remove 145580643 row versions
DETAIL: CPU 283.45s/673.39u sec elapsed 7583.39 sec
INFO: scanned index "web_pages_pkey" to remove 145580643 row versions
DETAIL: CPU 51.69s/90.19u sec elapsed 1461.37 sec
INFO: scanned index "ix_web_pages_id" to remove 145580643 row versions
DETAIL: CPU 63.13s/99.77u sec elapsed 1529.22 sec
INFO: scanned index "web_pages_netloc_fetchtime_idx" to remove 145580643 row versions
DETAIL: CPU 77.04s/5080.52u sec elapsed 6287.14 sec
INFO: scanned index "id_web_pages_id_state" to remove 145580643 row versions
DETAIL: CPU 64.52s/107.81u sec elapsed 1695.07 sec
INFO: scanned index "web_pages_fetchtime_idx" to remove 145580643 row versions
DETAIL: CPU 12.06s/99.66u sec elapsed 408.36 sec
INFO: "web_pages": removed 145580643 row versions in 8584664 pages
DETAIL: CPU 226.70s/140.17u sec elapsed 5019.28 sec
INFO: index "ix_web_pages_distance_filtered" now contains 16007295 row versions in 814166 pages
DETAIL: 38738938 index row versions were removed.
570268 index pages have been deleted, 385915 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.02 sec.
INFO: index "ix_web_pages_netloc" now contains 27370778 row versions in 3181634 pages
DETAIL: 67244989 index row versions were removed.
2669376 index pages have been deleted, 1876620 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO: index "ix_web_pages_priority" now contains 27370960 row versions in 2006220 pages
DETAIL: 67218177 index row versions were removed.
1056657 index pages have been deleted, 786603 are currently reusable.
CPU 0.01s/0.00u sec elapsed 0.03 sec.
INFO: index "ix_web_pages_state" now contains 27370969 row versions in 1532024 pages
DETAIL: 67244989 index row versions were removed.
986826 index pages have been deleted, 700367 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO: index "ix_web_pages_url" now contains 27382514 row versions in 7555366 pages
DETAIL: 78562001 index row versions were removed.
4290425 index pages have been deleted, 225461 are currently reusable.
CPU 0.02s/0.00u sec elapsed 0.04 sec.
INFO: index "web_pages_pkey" now contains 27401242 row versions in 2421605 pages
DETAIL: 78000787 index row versions were removed.
1068399 index pages have been deleted, 373558 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO: index "ix_web_pages_id" now contains 27411627 row versions in 2874706 pages
DETAIL: 82612172 index row versions were removed.
1290296 index pages have been deleted, 442226 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO: index "web_pages_netloc_fetchtime_idx" now contains 27556711 row versions in 4482440 pages
DETAIL: 80962513 index row versions were removed.
3373490 index pages have been deleted, 1873800 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.02 sec.
INFO: index "id_web_pages_id_state" now contains 27558627 row versions in 3094617 pages
DETAIL: 81497647 index row versions were removed.
1735454 index pages have been deleted, 631419 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.01 sec.
INFO: index "web_pages_fetchtime_idx" now contains 27559941 row versions in 656103 pages
DETAIL: 67710984 index row versions were removed.
228974 index pages have been deleted, 95938 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.00 sec.
INFO: "web_pages": found 32297714 removable, 26459019 nonremovable row versions in 14298550 out of 14827067 pages
DETAIL: 1671 dead row versions cannot be removed yet.
There were 378926914 unused item pointers.
Skipped 0 pages due to buffer pins.
0 pages are entirely empty.
CPU 1149.21s/12598.17u sec elapsed 35893.00 sec.
INFO: vacuuming "pg_toast.pg_toast_38269400"
INFO: scanned index "pg_toast_38269400_index" to remove 178956680 row versions
DETAIL: CPU 33.85s/139.43u sec elapsed 774.95 sec
INFO: "pg_toast_38269400": removed 178956680 row versions in 47342563 pages
DETAIL: CPU 1267.31s/752.22u sec elapsed 22404.29 sec
INFO: scanned index "pg_toast_38269400_index" to remove 162873580 row versions
DETAIL: CPU 20.65s/43.54u sec elapsed 216.38 sec
INFO: "pg_toast_38269400": removed 162873580 row versions in 39900140 pages
DETAIL: CPU 1085.52s/716.33u sec elapsed 13775.48 sec
INFO: index "pg_toast_38269400_index" now contains 91453965 row versions in 1622691 pages
DETAIL: 341830260 index row versions were removed.
540140 index pages have been deleted, 1626 are currently reusable.
CPU 0.00s/0.00u sec elapsed 0.02 sec.
INFO: "pg_toast_38269400": found 275718152 removable, 85526893 nonremovable row versions in 102611808 out of 104048880 pages
DETAIL: 1031 dead row versions cannot be removed yet.
There were 14286891 unused item pointers.
Skipped 0 pages due to buffer pins.
0 pages are entirely empty.
CPU 4786.16s/3240.77u sec elapsed 79646.66 sec.
INFO: analyzing "public.web_pages"
INFO: "web_pages": scanned 90000 of 14840002 pages, containing 166193 live rows and 1769 dead rows; 90000 rows in sample, 27403383 estimated total rows
VACUUM
webarchive=#
之前的尺寸报告:
webarchive=# \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+--------------------------+----------+-------------+------------+-------------
.....
public | web_pages | table | webarchuser | 920 GB |
.....
后:
webarchive=# \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+--------------------------+----------+-------------+------------+-------------
........
public | web_pages | table | webarchuser | 920 GB |
........
我意识到这里的“正确”解决方案是更大的磁盘,但这是一个爱好项目(尽管规模非常大),我只是没有钱购买更大的 SSD 存储。
我已经安装了 Ola Hallengren 的 MaintenanceSolution.sql 脚本。
所以我会开箱即用的是很多工作:
我的问题是:
我应该根据随脚本提供的作业实施哪些计划?
SQL-Full 备份于星期六晚上 11:00 开始。所以我想我会使用以下时间表:
Job Schedule
----------------------------- ------------------------
IndexOptimize Saturday at 10:00 pm
Database IntegrityCheck Saturday at 09:00 pm
CommandLog Cleanup Sunday at 03:00 am
Output File Cleanup Sunday at 03:15 am
SP_delte_backuphistory Sunday at 03:20 am
SP_purge_Jobhistory Sunday at 03:25 am
你有什么建议?
欢迎每条评论。
我不是 dba...让我们从那个开始 :) 我是应用程序开发人员。但是我们的数据库有一个存档表,它有 2.52 亿行和 170GB,我被派去修复它(实际上,这个类别中有多个表我需要清理)。但我们决定不需要保留任何此类数据。因为这个表是一个存档表,我的意思是这个数据有一个主事务表,但是应用程序有办法通过存档或移动旧记录到这个存档表来保持事务表更小。
作为存档表,它没有每个 SSMS 的依赖项(没有索引或外键)。此数据库设置为完全恢复模式。
我们的维护窗口很短,所以需要一个快速的过程,而且我们的磁盘空间有限,所以我们需要从这个表中回收磁盘空间。
我们可以截断表,那么如何回收空间呢?我们不想进行数据库收缩,因为它会收缩所有表,因此我们需要运行索引重建……至少这是我的理解,这可能是不正确的。
我可以从 SSMS 中保存一个脚本(脚本表作为 Create To...)。然后删除表,然后重新创建它......这有风险吗?它会回收空间吗?
其他想法?
我有一个需要重新同步的 MongoDB 实例。
2016-11-07T11:59:23.330+0000 I REPL [ReplicationExecutor] syncing from: x.x.x.x:27017
2016-11-07T11:59:23.354+0000 W REPL [rsBackgroundSync] we are too stale to use x.x.x.x:27017 as a sync source
2016-11-07T11:59:23.354+0000 I REPL [ReplicationExecutor] could not find member to sync from
2016-11-07T11:59:23.354+0000 E REPL [rsBackgroundSync] too stale to catch up -- entering maintenance mode
2016-11-07T11:59:23.354+0000 I REPL [rsBackgroundSync] our last optime : (term: 20, timestamp: Oct 4 07:41:29:1)
2016-11-07T11:59:23.354+0000 I REPL [rsBackgroundSync] oldest available is (term: 20, timestamp: Oct 17 02:13:33:5)
2016-11-07T11:59:23.354+0000 I REPL [rsBackgroundSync] See http://dochub.mongodb.org/core/resyncingaverystalereplicasetmember
2016-11-07T11:59:23.355+0000 I REPL [ReplicationExecutor] going into maintenance mode with 10333 other maintenance mode tasks in progress
这条线是什么意思?
[ReplicationExecutor] going into maintenance mode with 10333 other maintenance mode tasks in progress
什么是维护模式任务?没有来自 MongoDB 的文档。为什么有 10333 排队?如何查看它们(列表)?通过搜索引擎,我发现还记录条目with 0 other maintenance mode tasks in progress