标签: sql-server-2012

分配页失败:FAIL_PAGE_ALLOCATION 1

我们使用的是 Windows 2012 R2 上的 SQL Server 2012 SP3 Enterprise Edition。

我在 sql 日志中看到了这些错误:

分配页失败:FAIL_PAGE_ALLOCATION 1

2016-06-14 04:28:27.44 spid175 错误:701,严重性:17,状态:123。

2016-06-14 04:28:27.44 spid175 资源池“默认”中的系统内存不足,无法运行此查询。

2016-06-14 04:28:27.44 服务器错误:17300,严重性:16,状态:1。(参数:)。错误以简洁模式打印,因为格式化过程中出现错误。跟踪、ETW、通知等被跳过。

2016-06-14 04:28:27.44 服务器错误:17300,严重性:16,状态:1。(参数:)。错误以简洁模式打印,因为格式化过程中出现错误。跟踪、ETW、通知等被跳过。

2016-06-14 04:28:27.44 spid131 错误:701,严重性:17,状态:123。

据我所知,它似乎在某个时候耗尽了内存。
有没有办法找出导致它内存不足的原因?
MEMORYCLERK_SQLQERESERVATIONS是相当高的,没有人知道那是什么呢?

MEMORYCLERK_SQLQERESERVATIONS (node 0)           KB
---------------------------------------- ----------
VM Reserved                                       0
VM Committed                                      0
Locked Pages Allocated                            0
SM Reserved                                       0
SM Committed                                      0
Pages Allocated                            22599824
Run Code Online (Sandbox Code Playgroud)

编辑:我们在服务器上有 32 个内存,28 个分配给 SQL Server。最大内存设置为 28gb,最小服务器内存为 8gb。

这是 ErrorLog 输出的链接: ErrorLog

这是 sys.dm_os_process_memory 输出的链接: 查询输出 …

sql-server memory sql-server-2012

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

SQL 性能问题 - 首先正确配置服务器还是一一解决问题?

这适用于 SQL Server 2012。

我正在对 Dynamics AX 环境中的整体性能缓慢进行故障排除。一切都很慢 - 应用程序本身、报告、临时等。马上,我可以看到没有配置 SQL Server 的最佳实践 - MAXDOP、tempdb、特定于 Dynamics 的跟踪标志和索引/碎片化维护。我很确定存在低效查询、缺失或非最佳索引等。

我花了一点时间查看等待统计数据,但现在我想知道我是否应该首先应用所有推荐的最佳实践(DynamicsAX 的行业标准最佳实践),然后解决缓慢的问题,或者深入研究每个问题一个,并在它到来时解决它?我知道有些人会说,在您确定需要翻转开关之前,不要开始翻转开关。

你会如何处理这种情况?

performance sql-server best-practices sql-server-2012 microsoft-dynamics performance-tuning

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

使用两个 LEFT JOIN 还是将 AND 与单个 LEFT JOIN 一起使用?

使用两个LEFT JOINs ie

SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
LEFT JOIN Table2 AS t3 ON <condition2>
Run Code Online (Sandbox Code Playgroud)

这和AND在 single 中使用一样LEFT JOIN吗?IE

SELECT <some columns>
FROM Table1 AS t1
LEFT JOIN Table2 AS t2 ON <condition1>
AND <condition2>
Run Code Online (Sandbox Code Playgroud)

两者是相同的还是不同的(一般来说)?

join sql-server-2012

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

横向扩展SQL Server,分片分布式数据库

我想知道是否有任何方法可以跨多个节点分发 SQL Server(我使用的是 2012 版)数据库。我正在尝试比较 SQL Server 和 MongoDB 之间的 READ 查询性能。该发行版全部使用具有使用虚拟机的不同分片的 MongoDB 进行设置,我想为 SQL Server 进行类似的设置,但是我遇到了很多麻烦。

有没有关于如何做到这一点的材料?这个过程有看起来那么艰难吗?

performance sql-server distributed-databases sql-server-2012 sharding performance-testing

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

SSIS 代理/凭据在 SQL 代理作业步骤中不起作用

我一直在环顾四周,发现了类似的问题,但没有具体说明我遇到的问题。

问题: 我无法正确配置 SSIS 代理和 SQL 凭据以模拟运行 SSIS 包的 SQL 代理作业步骤的受限访问服务帐户。受限访问服务帐户拥有所有需要的权限,并且程序包设计正确。我已经阅读了很多关于这个主题的材料,如果我错过了什么,我希望得到一些帮助。

背景:( 在 Windows Server 2012 R2 上运行的 SQL 2012 SP3 服务器。SQL 引擎在 Domain1\Admin1 下运行,SQL 代理在 Domain1\Admin2 下运行。两者都在 SYSADMIN 服务器角色中。)

我们有一个 SSIS 包,它在由 SYSADMIN 交互式运行时运行良好,并且在作为“SQL Server 代理服务帐户”的作业步骤中运行时也运行良好。然而,我们的安全小组希望我们使用仅限于工作需要做的凭据运行,无论如何我认为这是最佳实践。我读过的所有内容都表明 SSIS 代理和凭据将有助于解决此要求;但是我无法使配置工作,所以我一定是做错了什么。

该包通过 SSIS 包作业步骤运行。它是一个本地文件,未部署到 MSDB 或 SSISDB。该包连接到网络共享,加载到 SQL 服务器本地的数据库中,截断一个表,运行一些存储过程,然后删除 XLS 文件。作业步骤设置为使用 32 位运行时。

安全创建了一个帐户 (Domain1\NewUser),该帐户将拥有网络共享的修改权限。我还要求他们将 Domain1\Admin2 作为修改添加到同一共享中。

对于设置,我仅使用 Public 角色为 Domain1\NewUser 创建了一个 SQL 登录名,并将其添加为有问题的数据库的 db_owner,因为程序包需要执行的操作范围。我使用 Domain1\NewUser 帐户和用户帐户的确切工作密码作为其身份创建了一个凭据(BatchLoad-credential)。然后,我使用 BatchLoad-credential 凭证创建了一个 SSIS 代理(BatchLoad-Proxy),在 SSIS 包子系统中处于活动状态,并将 Domain1\NewUser 的 SQL 登录添加为代理帐户主体。然后我将运行 SSIS 包的 SQL 代理作业步骤更改为作为 BatchLoad-Proxy …

ssis sql-server-2012 proxy

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

SQL、SQLCLR 对象和有效内存利用率

我们最近将我们的 ERP 系统从 IBM Universe 转换为 SQL Server。应用程序性能通常是可以接受的,但偶尔会降级到可怕的程度。

我们在具有 32 Gb RAM 的 VMWare 上的 Win Server 2012 和 SQL Server 2012 上运行数据库。SQL 最大内存设置为 27Gb。db 服务器仅托管此数据库,不执行任何其他功能。总数据库大小约为 110Gb。该应用程序有它自己的专用服务器。

供应商广泛使用 CLR 来移植代码(超过 36,000 个标量函数)。我了解单个 CLR 在应用程序 OLTP 上下文中运行正常,但由于逐行而不是基于设置的操作而尝试执行批量作业时,不能很好地扩展。很好……很酷……继续前进。

我运行了Brent Ozar 的脚本,该脚本高可用内存确定为需要查看的内容,以及每个查询的大量执行计划。供应商建议向服务器添加更多 RAM,但这让我很恼火,因为应用程序似乎没有使用现在的内存。

我感兴趣的是 SQL 的整体性能和行为。我看到一系列症状表明某些事情不正确,但我无法确定。这就像服务器拒绝运行。它决心

粗略地说,在我看来,大约 10Gb 的内存被数据库用于缓存,大约 11GB 是免费的,大约 3.5Gb 用于计划缓存,其余的我无法解释。我对一些定义有点不确定,例如免费、保留、被盗等。它们是否重复计算?

活动监视器显示:

在此处输入图片说明

当我运行此查询时:

-- what's happening inside my buffer pool?
SELECT counter_name, instance_name, mb = cntr_value/1024.0
  FROM sys.dm_os_performance_counters 
  WHERE (counter_name = …
Run Code Online (Sandbox Code Playgroud)

performance sql-server memory sql-server-2012 sql-clr performance-tuning

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

如何获取 SQL Server 数据库中每个表的最后截断时间

我有一个 SQL Server 2012 数据库。是否可以获得数据库中所有表的最后截断时间?

注意:恢复模式SIMPLE在我的场景中。如果我将其更改为可以FULL吗?

sql-server truncate sql-server-2012

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

Sql Server:一个看似奇怪的BEGIN TRAN行为——COMMIT

首先创建两个表:

CREATE TABLE xyz (Id INT)
CREATE TABLE abc (Id INT)
Run Code Online (Sandbox Code Playgroud)

请注意以下 SQL 代码:

DELETE FROM abc
BEGIN TRAN
EXEC('
INSERT INTO xyz VALUES (1),(2)
DECLARE @x INT = (SELECT Id FROM xyz)
')
INSERT INTO abc VALUES (1)
COMMIT

SELECT * FROM abc
Run Code Online (Sandbox Code Playgroud)

运行它会输出以下错误:

Msg 512, Level 16, State 1, Line 3
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012

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

将所有相似人物收集到一组

我有一个人有几个 ID。其中一些在 Id1 列中,其中一些在 Id2 中。我想将所有相同的人 ID 收集到一组。

如果 id1=10,则与 id2=20 在同一行。所以这意味着id1=10的人与id2=20是同一个人。

输入和输出示例:

输入

Id1     Id2
---     ---
10      20
10      30
30      30
10      40

50      70
60      50
70      70 
Run Code Online (Sandbox Code Playgroud)

输出

NewId   OldId
-----   -----
1       10
1       20
1       30
1       40

2       50
2       60
2       70
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql graph sql-server-2012

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

为什么 C# SMO 看不到列上的扩展属性,而 Powershell SMO 可以?

我正在尝试读取 winforms C# 应用程序中表和列的扩展属性。我正在使用 SQL Server SMO 来执行此操作。当我执行应用程序时,它看不到扩展属性,但是当我使用 PowerShell 读取扩展属性时,它确实看到了扩展属性。

C# 代码:

var x = col.ExtendedProperties.Count;
var NPI = col.ExtendedProperties["NPI"].Value;
bool npi = bool.Parse(NPI.ToString());
Run Code Online (Sandbox Code Playgroud)

PowerShell 代码:

Add-Type -AssemblyName "Microsoft.SqlServer.Smo, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
$server = New-Object Microsoft.SqlServer.Management.Smo.Server $env:COMPUTERNAME
$server.Databases["<db name>"].Tables["<table name>"].Columns["<column name>"].ExtendedProperties | Select Name, Value, State
Run Code Online (Sandbox Code Playgroud)

我已经检查过,Visual Studio 和 PowerShell 都使用相同版本的 SMO (11.0.0.0)。当我执行 C# 代码时 col.ExtendedProperties.Count = 0,但是当我执行 PowerShell 代码时,我得到:

Name Value    State
---- -----    -----
NPI  False Existing
Run Code Online (Sandbox Code Playgroud)

有没有人对为什么会发生这种情况有任何想法?

附加信息

在 C# 代码中,我使用以下方法在表上打开了一个 DataReader:

sourceServer.ConnectionContext.ExecuteReader(<select command>)
Run Code Online (Sandbox Code Playgroud)

从表中检索数据。然后我使用 DataReader 进入一个 …

sql-server powershell c# sql-server-2012 smo

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