标签: sql-server-2014

如何从基线计算所需资源以及应该衡量什么?

我必须处理以下情况:

目前我们有

  • 1 个集群,包含 5 个节点,运行 10 个实例(SQL Server 2008 企业版),以及
  • 1 个集群,2 个节点运行 5 个实例(SQL Server 2014 标准版)

正在使用。所有服务器都是在VMWare 中运行的虚拟服务器。

我们想要设置一个新的集群(SQL Server 2014 Enterprise)。第一步,将迁移 2008 Enterprise 集群中的 1 个实例和 2104 Standard 集群中的 1 个实例。

于是,老板问了我两个问题:

  1. 我们需要多少个核心(目标:最大限度地降低许可成本)?
  2. 我们需要多少内存?

我的回答是:“这取决于......”现在我必须通过监控接下来的几周来提供确凿的事实。伟大的!(小心讽刺)

我对第一个问题的处理方法:

我计划使用 perfmon.exe 进行监控

  • 处理器\% 处理器时间(_总核和单核),
  • 处理器\% 用户时间(_总核和单核),
  • 处理器\%中断时间(_总和单核)-这真的有必要吗?-, 和
  • 系统\处理器队列长度

问题是,这些数据从哪里获取呢?从节点?来自 SQL Server?

在第一种情况下,它应该很简单:第一个实例 -为了简单起见vsql2008ent-1\instanceX - 当前正在节点上运行,我们将其命名为节点sql2008NodeA。正常情况下,该节点上不应运行任何其他实例或服务器。所以我从哪里获取数据并不重要,不是吗?如果发生灾难,其他实例也将在此节点上运行。但我们希望有一个正常运行的基线。

第二个实例 - vsql2014stan-1\instanceY - 与其他 2 个实例共享其节点 - sql2014NodeA。在这种情况下,我永远无法确定实例真正需要多少核心才能平稳运行,对吧?这样我就可以监控实例了。但结果意味着什么呢?它仅显示该实例实际使用的CPU资源。但如果有可用的内核,是否会使用更多内核?那么上述问题的答案是什么呢?

内存是另一个问题。由于过去发生过几次灾难,当所有实例都落在同一节点上时,我为每个实例设置了最大服务器内存的上限。此限制取决于节点的可用内存(当前分别为 100GB 或 120GB)。那么如何监控呢?如果所有内存都用完,一切似乎都清楚了:内存不足。如果一切都变慢:内存不足。但我真正需要多少内存?

我尝试总结一下我的问题:

  1. 我应该从哪里获取测量值(节点与服务器)? …

sql-server-2008 monitoring sql-server sql-server-2014

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

SQL查询或列出所有正在运行的sql服务的方法

这可能是一个简单的问题,但我搜索了很多却找不到。

是否有 sql 查询或我可以在注册服务器上运行来查找所有正在运行的 sql 相关服务的列表,例如 ssis 、 ssas 、 ssrs 、 sql 、 agent 、 broswer 等...

尝试谷歌搜索并可以找到 sys.dm_server_services dmv 但它没有显示所有正在运行的服务

sql-server sql-server-2014 service-accounts

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

MS SQL Server 的名称可以与主机的名称不同吗?

我有一个由 IT 部门构建的虚拟机来托管各种流程。他们将计算机命名为“XYSVC105”之类难以理解的名称,并且不允许我更改它。我还在这台机器上安装了 MS SQL Server 2014,一切运行良好。

但是,我一直在寻找 MS 最佳实践,但似乎无法找到您是否能够将 SQL Server 的名称更改为与主机不同的名称,或者是否建议不要这样做。我想将 SQL Server 名称更改为“OPSRES”之类的名称。

造成这种情况的大部分原因是内部原因。其中之一是这将被众多用户和开发人员使用。根据经验,他们会记住像 OPSRES 这样的简单名称,而不是 XYZ145PPQ。

sql-server configuration sql-server-2014

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

Sql Server:如何从发布者查询订阅和文章列表(对于给定的发布)

在 Sql Server 2014 中,如何查询发布者给定发布的订阅及其文章列表?(事务复制)

是的,有更简单的方法可以从发行商处查询,但我需要从发行商端进行查询。

远程分销商模型(如果有帮助)

谢谢,

replication sql-server transactional-replication sql-server-2014

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

如果所有 LUN 都来自同一个 RAID 池,是否有必要将 tempdb 文件移动到不同的磁盘驱动器?

根据最佳实践,建议将所有tempdb(不仅仅是 tempdb)文件移动到不同的物理磁盘中。

我有一个虚拟服务器,最初有来自同一RAID 10池的 4 个 LUN。在卷管理器的帮助下,我将这 4 个 LUN 转换为 4 个不同的卷。

现在的问题是,移动tempdb到单独的卷中是否会产生任何影响,或者就性能而言,将它们与其他 SQL Server 文件保留在一起就可以了?

sql-server tempdb virtualisation sql-server-2014 raid

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

仅使用 LIKE 运算符记录大于纪元时间戳的记录

到目前为止,我有以下查询,不幸的是,我无法使用正则表达式大于运算符,我只能使用LIKE关键字。

整个列都在 json 字符串中,我无法使用json_value或 regexp,因为我在 SQL Server 上,所以我只能使用LIKE. 它是 SQL Server 2014,json_value直到 2016 年才受支持。

SELECT * FROM DataTableOne 
WHERE update_date LIKE '%1645290000%'
Run Code Online (Sandbox Code Playgroud)

我想仅使用 SQL 关键字检索纪元 unix 时间戳大于 1645290000 的所有记录LIKE(甚至使用 SQLLIKE运算符在 1645290000 和 9999999999 之间)。

任何帮助将不胜感激,因为这是一个非常困难的独特案例,我只能使用关键字LIKE

下面的示例表/数据:

CREATE TABLE DataTableOne (
    ID int,
    DATA varchar(MAX)
);

INSERT INTO DataTableOne (ID, DATA)
VALUES (1, '{"name":"Cole", "update_date":"2855290000"}'),
(2, '{"name":"Peter", "update_date":"1222290000"}') ;
Run Code Online (Sandbox Code Playgroud)

此类数据可能有一千行,而我只需要 update_date 大于 1645290000 …

sql-server json sql-server-2014 like date-math

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

从 2012 年迁移到 2014 年的 SQL Server(11 到 12)

我刚刚安装了 SQL Server Management Studio 2014,我还需要更新我的(本地)服务器以通过来自版本 12 服务器的 bak 文件接受新数据库。当我查看服务器属性时,我看到我的服务器版本为 11.0.5858.0(即 2012 sp2)。

如何将我的服务器升级/迁移到版本 12?

我查看了几个链接:Upgrade Database EngineUpgrade to SQL Server 2014 Using the Installation Wizard (Setup)。我还看到了我需要备份和恢复数据库的建议,我认为这意味着创建一个新的本地(说实话,我忘记了如何做到这一点)并将它们移到那里?

sql-server sql-server-2014

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

有没有办法在服务器级别为每个数据库(包括新数据库)授予 SELECT 权限?

我有一个独特的(好吧,我认为这是独特的)情况,可以或多或少地动态创建数据库(是的,整个数据库)。

忽略与此相关的明显问题,我需要能够允许 AD 帐户读取任何数据库中的任何数据。

承认围绕所有这些的安全问题,有没有办法在服务器级别只授予一次,而不是在新数据库弹出时不断授予?我更愿意将它保持在数据阅读器级别。

具体来说: 1. 数据库是动态创建的,无需 DBA 的先验知识 2. 报告作业遍历这些数据库,如果遇到新数据库则失败。

我正在使用 SQL Server 2008R2 和 SQL Server 2014。

security sql-server sql-server-2008-r2 sql-server-2014

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

如何识别调用存储过程的程序?

作为应用程序数据库设计规范的一部分,我们被要求阻止执行一组直接从 SSMS/osql/sqlcmd 等触发的存储过程;也就是说,它们必须只被允许在应用程序本身内运行。

当我们的团队质疑这是否可行时,我们看到了一个演示,该演示将查询限制在特定系统(实际上它让查询运行,但记录到运行它的表中)。然而,这样做的过程是加密的,所以我们无法知道它是如何完成的。

我们如何做到这一点?

security sql-server stored-procedures sql-server-2014

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

通过设置兼容性级别打开 2014 功能时,MS SQL Server CPU 负载急剧上升

我正在一台规格合理的机器上运行一些 Microsoft SQL Server 2014 负载测试。我当然不是 SQL Server 调优细节方面的专家,但根据我从各个地方收集的一些片段,我认为设置非常好。

表演中的一个元素确实令人困惑,因此我在这里伸出援手。我正在测试的数据库是历史上建立的,最初是针对 2008r2 创建的。兼容性设置是从那个版本继承过来的。上周我分两个阶段提高了该设置,但是当我将其从 2012 年提高到 2014 年的兼容性时,突然间 CPU 负载飙升。

当来回更改此设置时,它似乎是系统性的。我可以使用 2012 设置在 8 核数据库上运行 X 个模拟用户(数据库前面的 Web 应用程序)。如果我将其提高到 2014 年,我只能逃脱 60% 的 X 个模拟用户。反之,对于 X 用户,2014 年设置的批量请求数降低了 40%。

据我了解,切换回兼容性级别不会恢复数据库,而只会关闭功能。这种情况似乎表明一个功能在没有明显增益的情况下消耗 CPU,所以我想知道可能是哪个功能以及是否有办法单独打开该特定功能?

serverfault 上的其他帖子指出升级后重建索引,我已经这样做了,但这似乎并没有真正产生影响。

需要注意的是,手头的应用程序会生成许多不是准备好的语句的查询。这可能导致我在 perfmon 中看到大量编译(编译/批处理请求:0.25)。我对此无能为力,所以告诉我先做些什么并不能真正帮助我前进。

performance sql-server sql-server-2014

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