标签: sql-server-2012

设置 maxdop 1 与设置高并行度阈值

我正在研究并行设置的可能边缘情况。

我长期以来一直相信maxdop 1是 Microsoft Dynamics CRM 数据库的可行选项。由于数据库的本质是严格的 OLTP,并且并行性对 CRM 实例几乎没有好处,因此我始终将 CRM 数据库设置为maxdop 1.

但是,我现在有一个数据库实例,它具有:

  • Microsoft Dynamics CRM 数据库
  • 主要用于 OLAP 目的的 ETL 数据库

我询问了我们的业务合作伙伴,他们对性能重要性的看法如下:

  1. CRM 必须快速,期间
  2. ETL 导入不应受到限制,但应排在 CRM 性能之后

因此,我倾向于牺牲 OLAP 数据库的并行性,并设置maxdop 1为最大限度地使 CRM 受益。
然而,可能存在一些中间立场。

如果我将 设置cost threshold for parallelism为一个数字,排除 CRM 抛出的所有内容,但根据我的查询计划可能会抓取一些 OLAP 事务,对 CRM 会有任何不利影响吗?

如果有的话,保持阈值如此之高(几乎从未达到)的影响是什么,与设置相比maxdop 1,我是否会在计算查询计划时让 SQL Server 考虑阈值而产生一些隐藏成本?

performance parallelism sql-server-2012 microsoft-dynamics

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

将数据从一个 SQL Server 路由到另一个

在 SQL Server 2012 中有没有办法将数据写入一个表,然后路由到另一台主机上的另一个 SQL Server?

澄清一下,我们使用 Hibernate Envars 来编写审计日志。Hibernate Envars 不允许将此数据发送到另一台服务器,而不是由 Hibernate 创建审计日志的服务器。

我希望将这些审核日志发送到另一台服务器。有没有办法将 SQL Server 配置为将特定表写入另一台服务器?

sql-server sql-server-2012

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

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

启用扩展事件的成本是多少?

我一直在处理死锁,特别是获取他们的信息,正如你在这篇文章中看到的

在同一篇文章中,Shanky推荐了“您现在必须依靠扩展事件跟踪来捕获死锁信息

我的问题是:

1) 使用扩展事件是否会增加 CPU?

2) 它使用了多少内存、磁盘空间和 I/O?

任何相关文档的链接都将是奖励。

sql-server deadlock extended-events sql-server-2012

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

找出跟踪文件中的列

在处理每 10 分钟发生一次的意外 CPU 峰值时,我的一位同事准备了如下的服务器端跟踪:

-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
declare @DateTime datetime

set @DateTime = '2015-09-03 10:50:00.000'
set @maxfilesize = 10240 --10GB

-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 trace

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

允许非系统管理员用户查看 SQL Server 执行计划

这可能吗 ?在 SQL Server 2012+ 上,授予非 sysadmin 用户访问权限以查看执行计划?并且只能对选定的数据库执行此操作吗?

security sql-server permissions execution-plan sql-server-2012

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

在存储过程中生成数据库创建脚本

我希望自动擦除我们的测试环境,使其在每个冲刺结束时与生产保持一致。

就目前而言,这目前正在通过测试环境获取完整备份并使用移动和替换进行恢复来完成,但这占用了我们拥有的大部分空间。

目的是从头开始创建环境并仅填充所需的表。

我可以使用“右键单击 > 任务 > 生成脚本...”来创建数据库框架。

有没有办法从存储过程中创建该脚本,以便可以用于重新创建数据库

此外,我正在按原样处理这一点,但显然该脚本只会以其当前大小创建数据库,因此一旦生成脚本,就需要修改所有文件大小

为任何帮助干杯

sql-server stored-procedures restore sql-server-2012

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

由于 SQL Server 日志中的内存压力消息,AppDomain 2 (mssqlsystemresource.dbo[runtime].1) 被标记为卸载

从最近两天开始,我可以在 SQL Server 错误日志中看到以下内容。

AppDomain 2 (mssqlsystemresource.dbo[runtime].1) unloaded.
&
AppDomain 2 (mssqlsystemresource.dbo[runtime].1) is marked for unload due to memory pressure.
Run Code Online (Sandbox Code Playgroud)

我有这样的系统环境:

OS- microosft windows server 2012 R2 Standard
processors - Intel(R) Xeon(R) CPU E5-2670 0 @2.60 GHz
Installed Memory (RAM) - 8GB
Hardware Information - VMWare, Inc. VMware Virtual Platform
SQL Server - Microsoft SQL Server Enterprise (64-bit)
Run Code Online (Sandbox Code Playgroud)

我已经在本地服务器中查看了昨天的事件日志。我找到了这些事件

Server Name ID  Severity    Source            Log      Date and Time
ABC    1008 Error   Microsoft-Windows-Perflib Application 10/01/2015 2:21
ABC     2   Error   TeamCentral      Application …
Run Code Online (Sandbox Code Playgroud)

memory sql-server-2012 event-notification sql-clr

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

帮助查询

我有以下数据。

我正在尝试获取项目处于特定状态的天数。下面的原始数据示例,我需要能够获得显示的结果。

我可以得到一些关于如何实现这一目标的指示吗?

原始数据

??????????????????????????????????????????????????????????
?                ID                ? STATUS ? ENTRY_DATE ?
??????????????????????????????????????????????????????????
? 541c4cfd009784b7ad7b47a552ab7ea2 ? WIH    ? 9/25/2015  ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL    ? 9/9/2015   ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL    ? 7/21/2015  ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL    ? 7/21/2015  ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL    ? 7/8/2015   ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CUR    ? 6/25/2015  ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL    ? 6/25/2015  ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL    ? 6/16/2015  ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? TNJ    ? 5/26/2015  ?
? 541c4cfd009784b7ad7b47a552ab7ea2 ? CPL …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 gaps-and-islands

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

SSMS 输出中的格式列长度

SQL Server 2012。本文底部的示例查询。

我正在尝试为上次备份给定数据库的时间创建一个简单的报告。

在 SSMS 中执行输出到文本的示例查询时,DB_NAME列被格式化为数据的最大可能大小(DB2 中存在相同的问题,顺便说一句)。所以,我有一列包含从不超过 12 个字符的数据,但它存储在 中varchar(128),无论如何我都会得到 128 个字符的数据。RTRIM对输出没有影响。

您知道有没有一种优雅的方法可以使格式化的列长度成为实际数据的最大大小,而不是数据的最大潜在大小?

我想存在一个xp_sprintf()函数,但我不熟悉它,而且它看起来不是很健壮。

我试过像这样铸造它:

DECLARE @Servername_Length int;
SELECT  @Servername_Length =        LEN(    CAST(   SERVERPROPERTY('Servername') AS VARCHAR(MAX)    )   ) ;

...
SELECT  
   CONVERT(CHAR(@Servername_Length), SERVERPROPERTY('Servername')) AS Server, 
...
Run Code Online (Sandbox Code Playgroud)

但是 SQL Server 不会让我在转换时@database_name_Length在我的varchar定义中使用该变量。显然,SQL Server 在声明charorvarchar变量时需要一个文字数字。

我开始在字符串中构建语句并使用类似的东西sp_executesql,或者构建一个具有我需要的实际列长度的临时表,这两者都比我希望去的只是为了不获得 100 更麻烦我的输出中有 128 个字符的列中的空格。

搜索了互联网并找到了bupkus。

也许我在寻找错误的东西,或者谷歌对我不利。

似乎 SSMS 会将列格式化为允许的最大大小,即使实际数据要小得多。我希望有一种优雅的方式来“解决”这个问题,而无需跳过箍。我正在使用 SSMS 2012。

如果我转到结果到网格,然后转到 Excel 或类似的东西,则会消除尾随空格。不过,我希望基本上创建一份我通过电子邮件发送的报告。 …

sql-server ssms t-sql sql-server-2012 reporting

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