小编Sha*_*nky的帖子

备份/还原使用复制的数据库时 SQL Server 的注意事项

如果我需要还原涉及复制的数据库,我需要牢记哪些注意事项?

  • 我需要保留发布者和订阅者的备份吗?
  • 我可以只恢复发布者并让订阅者自动同步吗?
  • 如果订阅者崩溃,是否可以从备份中恢复并自动同步?

replication sql-server backup sql-server-2008-r2 restore

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

数据库碎片整理和自动增长设置

我们确实为 SQL Server 2008 r2 express 制定了一些维护计划。如果任何表的页数超过 50 并且平均碎片超过 20,我们每个月都会对数据库进行碎片整理。

如果数据库日志大小>2MB,则恢复模式为简单,收缩,恢复模式重新设置为FULL。如果 Page_count>50 且 avg_fragmentation_in_percent > 30,则索引为 REBUILD。

如果 Page_count>50 且 avg_fragmentation_in_percent > 5 且 <30,则索引为 REORGANIZE。

这就是我们目前正在做的事情。但是我们发现自增长事件是资源密集型的,不应重复发生。现在,对于所有数据库,mdf 文件的自动增长设置为 MB,ldf 文件设置为 10%,这是创建新数据库时的默认值。我们计划根据每天变大的数据库数量来增加数据库的自动增长值。但是我想知道有多少自动增长事件对数据库来说是理想的。我应该设置自动增长以便它每天、每周或每月等只发生一次吗?所以请帮助我为我的数据库设置自动增长值。还有另一个问题,如果我每月对数据库进行碎片整理,那么它就会缩小。因此,在此之后,对于所有我确实收缩过的数据库,在写入新数据时都会发生一次自动增长。所以会有很多自动增长事件。那么会不会有问题呢?请告诉我一个解决方案。

sql-server maintenance shrink sql-server-2008-r2

7
推荐指数
2
解决办法
2848
查看次数

sys.dm_exec_requests - start_time

我有以下查询,它告诉我我负责的数据库中查询的状态(尽管我不是 DBA)。

SELECT 
     T3.FullStatement as FullSQLStatement
    ,T3.ExecutingStatement
    ,req.session_id as SessionId
    ,T2.login_name as LoginName
    ,command as SQLCommand
    ,start_time as StartTime
    ,DateDiff(MINUTE,start_time,GetDate()) as ElapsedTimeMinutes
    ,req.status as QueryStatus
    ,req.wait_type as WaitType
    ,req.wait_time as WaitTimeMs
    ,blocking_session_id as BlockingSessionId
    ,req.row_count as [RowCount]
    ,req.cpu_time as CpuTimeMs
    ,req.total_elapsed_time as TotalElapsedTimeMs
    ,SubString(sqltext.TEXT,req.statement_start_offset,req.statement_end_offset-req.statement_start_offset)
FROM sys.dm_exec_requests req
    Inner Join sys.dm_exec_sessions T2 ON T2.session_id = req.session_id
    Cross Apply dbo.GetExecutingSQLStatement (req.session_id) T3
    Cross Apply sys.dm_exec_sql_text(sql_handle) AS sqltext
where req.database_id = 5
Order By 6 Desc
Run Code Online (Sandbox Code Playgroud)

它生成的输出部分如下所示:

在此处输入图片说明 尽管它在我包含的示例中没有很好地显示,但 start_time 是完整语句的开始时间,而不是语句的执行部分。有什么地方可以获取执行部分的开始时间以及完整语句的开始时间。这对我很重要,因为很明显,一个完整的语句可能有许多单独的查询。

sql-server dmv

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

增加 SQL Server 产品上的最大内存设置

我有一个带有 5 个实例的生产盒。

版本:SQL Server 2014 SP3 企业版。

我发现即使机器分配了大约 400GB 的内存,所有 5 个实例的组合MAX MEMORY设置也小于 200GB。

实例不会受到内存压力的影响,但是由于我们已经分配了该内存,所以不使用它是一种浪费。

我想将其增加到更高的值,为操作系统保留 10%(某些实例的分配将高于其他实例)。

不过,我以前从来没有对这个设置做过这么大的增加。

我知道这是一个不需要重启的动态设置,但是,我想知道以下几点:

  • 我应该分两个阶段增加(即增加一半,等待一周然后再次增加)?
  • 如果 SQL Server 突然有更多的内存可以使用,是否会突然中断(或导致性能下降)?

我们没有启用内存设置中的锁定页面,也没有启用跟踪标志 834

sql-server memory configuration sql-server-2014

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

SQL 备份问题/操作系统错误 995

昨晚某些数据库的备份失败。正在使用 CommVault. 以下是 SQL Server 日志中的错误消息

01/05/2016 23:03:58,spid58,Unknown,BackupVirtualDeviceFile::SendFileInfoBegin:备份设备“{051A54E1-01B8-4F24-BCB3-A63A7B43D100}5”失败。操作系统错误 995(无法检索此错误的文本。原因:15105)。01/05/2016 23:03:58,spid58,未知,错误:18210 严重性:16 状态:1。

01/05/2016 23:03:58,spid59,Unknown,BackupVirtualDeviceFile::SendFileInfoBegin:备份设备“{051A54E1-01B8-4F24-BCB3-A63A7B43D100}7”失败。操作系统错误 995(无法检索此错误的文本。原因:15105)。01/05/2016 23:03:58,spid59,未知,错误:18210 严重性:16 状态:1。

01/05/2016 23:03:58,spid61,Unknown,BackupVirtualDeviceFile::SendFileInfoBegin:备份设备“{051A54E1-01B8-4F24-BCB3-A63A7B43D100}6”失败。操作系统错误 995(无法检索此错误的文本。原因:15105)。01/05/2016 23:03:58,spid61,未知,错误:18210 严重性:16 状态:1。

01/05/2016 23:03:58,spid63,Unknown,BackupVirtualDeviceFile::SendFileInfoBegin: 备份设备失败“{051A54E1-01B8-4F24-BCB3-A63A7B43D100}9”。操作系统错误 995(无法检索此错误的文本。原因:15105)。01/05/2016 23:03:58,spid63,未知,错误:18210 严重性:16 状态:1。

01/05/2016 23:03:58,spid57,Unknown,BackupVirtualDeviceFile::SendFileInfoBegin:备份设备“{051A54E1-01B8-4F24-BCB3-A63A7B43D100}4”失败。操作系统错误 995(无法检索此错误的文本。原因:15105)。01/05/2016 23:03:58,spid57,未知,错误:18210 严重性:16 状态:1。

01/05/2016 23:03:58,spid62,Unknown,BackupVirtualDeviceFile::SendFileInfoBegin: 备份设备失败“{051A54E1-01B8-4F24-BCB3-A63A7B43D100}8”。操作系统错误 995(无法检索此错误的文本。原因:15105)。01/05/2016 23:03:58,spid62,未知,错误:18210 严重性:16 状态:1。

01/05/2016 23:03:58,Backup,Unknown,BACKUP 未能完成命令 BACKUP DATABASE master。检查备份应用程序日志以获取详细消息。01/05/2016 23:03:58,备份,未知,错误:3041 严重性:16 状态:1。

01/05/2016 23:03:58,Backup,Unknown,BACKUP 未能完成命令 BACKUP DATABASE SUNDOMAIN_WLD。检查备份应用程序日志以获取详细消息。01/05/2016 23:03:58,备份,未知,错误:3041 严重性:16 状态:1。

01/05/2016 23:03:58,Backup,Unknown,BACKUP 未能完成命令 BACKUP DATABASE db1_TST。检查备份应用程序日志以获取详细消息。01/05/2016 23:03:58,备份,未知,错误:3041 严重性:16 状态:1。

01/05/2016 23:03:58,Backup,Unknown,BACKUP 未能完成命令 BACKUP DATABASE msdb。检查备份应用程序日志以获取详细消息。01/05/2016 23:03:58,备份,未知,错误:3041 严重性:16 …

sql-server backup errors

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

在 SQL Server 2017 中仍然推荐内存中的锁定页面吗?

我对内存中的锁定页面进行了一些研究,仍然困扰我的问题是(我知道这确实取决于您的规范,但是)是否仍然建议在 SQL Server 2017 中锁定页面,就像在 SQL Server 2005、2008 等中一样.?

sql-server sql-server-2017

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

DBCC SHRINKFILE 实际上在做什么?

我有一个大小为 11TB 的数据库。我最近从这个数据库中截断了超过 5TB 的数据。

(我完全熟悉您通常不会收缩数据库的所有原因)

我很好奇 DBCC SHRINKFILE 命令实际上在做什么,因为当我运行该命令来缩小一个大小约为 650000MB 且可用空间为 45% 的文件时,它似乎实际上并没有移动任何页面。

有问题的代码是:

USE [CAF] 
GO 
DBCC SHRINKFILE (N'FILENAME' , 650239) 
GO
Run Code Online (Sandbox Code Playgroud)

当我在执行 DBCC SHRINKFILE 时监视服务器的性能指标时,我看到以下内容

  • % 磁盘的活动时间立即跳到 100%。
  • sqlservr.exe 和系统进程都以连续 2MB/s 的速度开始读取(有时以 5MB/s 达到峰值)。
  • 磁盘队列长度直接跳到 1
  • 磁盘 iops 跳到 250 左右(注意测试中的磁盘可以达到 6000 iops) CPU 保持空闲

即使我告诉 DBCC SHRINKFILE 将文件缩小 1 MB 并让它运行 30 分钟,它也不会完成。

我读过的所有内容都表明 DBCC SHRINKFILE 应该从文件末尾获取页面并将它们移动到开头附近的可用空间,但即使在最差的性能下,移动 1MB 的页面也不会超过几分钟

DBCC SHRINKFILE 实际上在做什么,对我来说没有意义?

sql-server shrink

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

SQL Server R2 标准版 MAXDOP 设置

我正在寻找有关使用以下配置在 SQL Server 实例中设置 MAXDOP 的确认/指导:

版本:SQL Server 2008 R2 标准版处理器:2 x AMD Opteron(TM) 处理器 6234 = 24 核启用超线程

对于这个处理器,每个单独的插槽都有两个 NUMA 节点,每个节点都有 6 个内核。Microsoft 的知识库文章“最大并行度”配置选项的建议和指南 ( http://support.microsoft.com/kb/2806535 ) 建议“对于已配置 NUMA 并启用超线程的服务器,MAXDOP 值不应超过每个 NUMA 节点的物理处理器数量。” 所以我想将 MAXDOP 设置为 6(一个 NUMA 节点中的内核数。)

然而,微软关于最大并行度选项的文档http://technet.microsoft.com/en-us/library/ms181007(v=SQL.105).aspx告诉我可以用于 MAXDOP 的最大值SQL Server 2008 R2 标准版为 4。

所以,我猜测 MAXDOP 4 的版本推荐覆盖了 MAXDOP=6 的处理器/NUMA 推荐?其他任何人都有这种配置并且知道如果我尝试将 MAXDOP 设置为 6 会发生什么?

sql-server-2008-r2 maxdop

5
推荐指数
1
解决办法
1517
查看次数

SQL Server 2008 R2:LDF 文件大小没有增加

我正在使用 SQL Server 2008 R2。我statDB在主文件组中有一个100 GB的表。

我在同一个数据库 ( Lab1) 中创建了一个辅助文件组并创建了一个表copyStatDB

现在我开始将表数据从主文件组复制到辅助文件组。

我注意到我的TempDB大小没有改变,我的.LDF文件大小也没有改变。

我很惊讶地看到,因为根据我的理解,当我们执行 Insert 语句时,它应该先增加.LDF文件大小,然后再将数据复制到我的.NDF文件中。

sql-server sql-server-2008-r2

5
推荐指数
1
解决办法
283
查看次数

SQL Server 占用的内存超过分配的内存。可能的内存泄漏

使用 SQL Server 2012 64 位 (v11.0.6020.0 - 2012 SP3)

下面是场景:

在我们的生产中,我们安装了 32 GB DDR3 RAM:

在此处输入图片说明

SQL Server 中的最大内存限制已设置为 16 GB,即 50% 容量:

在此处输入图片说明

当我启动任务管理器并检查内存占用的值时,它显示 16 GB,这是正确的:

在此处输入图片说明

但是当我选择百分比占用的内存时,它显示 80%-85% 这是不正确的:

在此处输入图片说明

这将继续增加,直到它占据超过 95% 并且

  1. 整个系统会变慢
  2. 查询将超时

解决此问题的唯一方法是重新启动服务器

我的问题是

  1. SQL Server 是否泄漏内存?
  2. 有什么快速解决办法,这样我就不必重新启动了吗?
  3. 永久解决?

sql-server memory sql-server-2012

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