我们使用的是 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 2012。
我正在对 Dynamics AX 环境中的整体性能缓慢进行故障排除。一切都很慢 - 应用程序本身、报告、临时等。马上,我可以看到没有配置 SQL Server 的最佳实践 - MAXDOP、tempdb、特定于 Dynamics 的跟踪标志和索引/碎片化维护。我很确定存在低效查询、缺失或非最佳索引等。
我花了一点时间查看等待统计数据,但现在我想知道我是否应该首先应用所有推荐的最佳实践(DynamicsAX 的行业标准最佳实践),然后解决缓慢的问题,或者深入研究每个问题一个,并在它到来时解决它?我知道有些人会说,在您确定需要翻转开关之前,不要开始翻转开关。
你会如何处理这种情况?
performance sql-server best-practices sql-server-2012 microsoft-dynamics performance-tuning
使用两个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)
两者是相同的还是不同的(一般来说)?
我想知道是否有任何方法可以跨多个节点分发 SQL Server(我使用的是 2012 版)数据库。我正在尝试比较 SQL Server 和 MongoDB 之间的 READ 查询性能。该发行版全部使用具有使用虚拟机的不同分片的 MongoDB 进行设置,我想为 SQL Server 进行类似的设置,但是我遇到了很多麻烦。
有没有关于如何做到这一点的材料?这个过程有看起来那么艰难吗?
performance sql-server distributed-databases sql-server-2012 sharding performance-testing
我一直在环顾四周,发现了类似的问题,但没有具体说明我遇到的问题。
问题: 我无法正确配置 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 …
我们最近将我们的 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
我有一个 SQL Server 2012 数据库。是否可以获得数据库中所有表的最后截断时间?
注意:恢复模式SIMPLE在我的场景中。如果我将其更改为可以FULL吗?
首先创建两个表:
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) 我有一个人有几个 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) 我正在尝试读取 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-2012 ×10
sql-server ×8
performance ×3
memory ×2
c# ×1
graph ×1
join ×1
powershell ×1
proxy ×1
sharding ×1
smo ×1
sql-clr ×1
ssis ×1
t-sql ×1
truncate ×1