小编Sha*_*nky的帖子

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
查看次数

无法恢复数据库备份,因为它被其他连接访问

--first command

use master

Go
-- second command
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

Go 
-- Third command
RESTORE DATABASE [MyDB] FROM  DISK = N'D:\Restore_Backup\Restore_05042015\AcctDB.bak' 
WITH  FILE = 1,  
MOVE N' AcctDB ' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\WFStageAcct.mdf',  
MOVE N' AcctDB _log' 
TO N'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\WFStageAcct_log.ldf',  
NOUNLOAD,  
REPLACE,  
STATS = 10

GO

--forth command

ALTER DATABASE MyDB SET MULTI_USER 

Go
Run Code Online (Sandbox Code Playgroud)

我运行上面的命令,一一恢复不同服务器上的数据库。但是有时我更改为单用户模式后无法恢复数据库,因为它被其他连接访问。如果我运行除了最后一部分之外的整个脚本会阻止其他连接,所以我将成为唯一的用户?

sql-server restore

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

了解 SQL Server 主动/主动集群

我对 SQL Server 的主动/主动集群有一个模糊的理解。任何人都可以帮助确认我的理解是否正确?

据我了解,主动/主动集群使用两个或多个 Windows 服务器。假设我们有两台服务器 n1 和 n2。然后我们在这两台服务器上创建一个故障转移集群,并将 n1 和 n2 加入集群。然后我们在 n1 和 n2 上安装一个 SQL Server 实例 i1。之后,我们在 n1 和 n2 上安装另一个 SQL Server 实例 i2。然后我们可以在 n1 上启动 i1 并在 n2 上启动 i2 以创建一个主动/主动集群。稍后我们可以将 i1 从 n1 故障转移到 n2,并将 i2 从 n2 故障转移到 n1。

我的理解正确吗?我们是否需要在 n1 和 n2 上安装实例 i1 和 i2?安装配置好主动/主动集群后,每个节点上安装并运行了多少SQL Server服务?

sql-server clustering failover

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

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
查看次数

SQL 服务器备份消息

您能否对 SQL 服务器备份消息稍作说明

例如 :

BACKUP DATABASE 在 1945.648 秒(79.088 MB/秒)内成功处理了 19696388 页。

例如,我们有一个带数据库的磁盘,我们有单独的磁盘用于备份,这是否意味着 79 MB/秒是一个磁盘以 40 mb/秒的速度读取数据进行备份,另一个磁盘以 40 mb 的速度写入数据,总和它给了我们 79 mb/sec 的速度,对吗?

performance sql-server backup

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

带有重载数据库的 MS SQL Server 自动增长配置

我有一个大小约为 200G 的数据库,并且每天都会发生许多插入操作(每天增长大约 3 到 4 GB),但自动增长设置设置为 1 MB。

我认为这是一个问题,我认为如果我将其设置为 1GB 会提高性能和能力,对吗?

我认为 1MB 自动增长数据库将总是忙于分配新空间,是吗?关于提高性能的最佳实用方法有什么建议吗?

谢谢大家

sql-server auto-growth

4
推荐指数
1
解决办法
6386
查看次数

重建与重组

我目前有一个维护计划,每天都会重新组织索引,我想知道如果您每天都重新组织索引,是否需要重建索引?如果是这样,为什么?

sql-server maintenance index-tuning

4
推荐指数
1
解决办法
6516
查看次数

重新设计数据库成本和建议

我正在使用的 Web 应用程序有一个巨大的数据库,它真的一团糟,没有外键,没有约束,没有索引,没有优化,没有规范化,什么都没有。到目前为止,逻辑一直是:如果您需要一个字段,则添加它,如果您需要一个表,则尽可能快地创建它。一开始,我无法理解这些错误的严重性,但不得不一直处理由坏数据库造成的障碍,这让我决定重新设计整个数据库。我需要知道的是:

  1. 我应该从哪里开始,规范化,添加键和索引,还是其他地方?
  2. 由于这些更改的成本对我的工作来说是巨大的(我将不得不从头开始重新设计整个代码以适应它),是否值得?我的意思是,这么大的事情有什么利弊(我说巨大,因为我是数据库问题的初级水平)。如果有人可以指导我,那就太棒了

database-design sql-server database-recommendation

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

查询处理器耗尽了内部资源 - 超长的 sql 查询

我有一个 SQL Server 2012 数据库,其中包含大约 2000 个表(每日日志文件),每个表大约有 2000 万条记录。输出select @@Version

Microsoft SQL Server 2012 - Windows NT 6.2 上的 11.0.2100.60 (X64) 标准版(64 位)(内部版本 9200:)

现在,为了生成年度或 3 年报告,我需要对每个表运行查询并“联合所有”结果。查询是动态生成的,通常规模很小。但是在执行“Union all: with 1000 table”之后,它变成了一个巨大的查询。

在处理此类查询时,我收到如下突出显示的错误。

该应用程序已经构建、测试并处于实时生产中,因此我无法使用临时表或哈希表来存储中间结果。

现在,我如何摆脱此错误消息?

查询处理器耗尽了内部资源,无法生成查询计划。这是一种罕见的事件,仅适用于极其复杂的查询或引用大量表或分区的查询。

sql-server sql-server-2012

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

页面预期寿命下降时的缓冲区缓存大小

我正在对我们的一个 SharePoint 数据库的问题进行故障排除,我认为 PLE 的大幅下降主要是由于 I/O 活动增加(我同时看到读取、写入和延迟写入增加)

此时的缓冲区缓存命中率通常为 96%。

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 2012 年 10 月 19 日 13:38:57 版权所有 (c) Microsoft Corporation Enterprise Edition:Windows NT 6.2(Build 9200:)上的基于核心的许可(64 位)(管理程序)

我想在 PLE 删除的确切时间检查缓冲区缓存的大小,所以我正在运行以下查询,我认为它以 MB 为单位给出了大小:

DECLARE @total_buffer INT;

SELECT @total_buffer = cntr_value
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Buffer Manager%'
AND counter_name = 'Database Pages'

SELECT ((@total_buffer * 8) / 1024) AS CacheSizeMB
Run Code Online (Sandbox Code Playgroud)

我看到的大小没有意义(对我来说,我的意思是),通常为 250-350MB。我希望我会看到一个大尺寸,然后我可以检查哪些表在缓存中的页面最多,这有望引导我找到哪些 LOB 对象正在被检索/上传,从而导致问题。

我还需要查看计划缓存吗?即 PLE 丢弃可能是由一些繁重的表扫描引起的吗?

SQL Server 从可用的 16GB 分配了 12GB 的 …

performance sql-server memory sql-server-2012

4
推荐指数
1
解决办法
1188
查看次数