标签: sql-server

授予非系统管理员更改最大内存设置 SQL Server 的能力

我收到了创建存储过程的请求,该存储过程将允许用户(有权访问数据库服务器)更改 SQL Server 的max server memory (MB). 这不是困难的部分。

另一个要求是该用户应该能够更改这个唯一的参数,max server memory (MB)而不能更改其他任何参数。我想知道的是,如果可能的话。

我确实意识到,为了能够执行sp_configure和运行RECONFIGURE,所需的最低权限是ALTER SETTINGS. 并且提供ALTER SETTINGS会破坏存储过程的目的(它被设计为只运行exec sys.sp_configure 'max server memory (MB)', @TheReqMemVal)以及 的最小和最大允许值max server memory (MB)

在阅读了一些评论后,我想补充一点,如果响应中包含可能存在的安全隐患,我们将不胜感激。

sql-server stored-procedures permissions sql-server-2012 sql-server-2014

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

检查 SQL Server 数据库上的约束对于数字范围和年份和月份是否可取?

我正忙于设计一个网站,我需要在我的 SQL Server 数据库中包含以下列:

  1. 分配(从 0 到 100 的值)
  2. 年(仅)
  3. 月(仅)

我已经阅读了有关检查约束的内容,我想知道以下是否可行/以及它是否是上述问题的最佳解决方案:

allocation  | tinyint | not null | check constraint: 0-100
year        | date    | not null | check constraint: year
month       | date    | not null | check constraint: month
Run Code Online (Sandbox Code Playgroud)

我也会从我的前端进行验证,但我听说在适当的地方设计带有这些限制的数据库是一种很好的做法。

sql-server check-constraints

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

如何将数据从 SQL Server 审计文件加载到表中?

我在 SQL Server 2008 R2 中启用了审计来监视 DML 和 DDL 操作。

有没有办法将 SQLAudit 文件加载到数据库?或者任何其他方法将审计详细信息直接自动加载到数据库?

sql-server audit sql-server-2008-r2

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

sp_blitz 执行需要多长时间?

我正在尝试sp_blitz在 SQL Server 2014上运行,但似乎需要很长时间。正常长度是多少?

我们只有大约 30 个数据库。一个是 300GB,但它持续了 15 分钟。

sql-server sql-server-2014 sp-blitz

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

日期范围在 WHERE 中的 SQL Server 查询 - 执行计划使用聚集的 PK 实例而不是日期列索引

我在 SQL 服务器中有以下查询:

declare @timestamp_start date = getdate() - 1
declare @timestamp_end date = getdate()

SELECT  
    my_date = a.itemTimestamp
FROM
    my_table a with(nolock)
WHERE 
    (@timestamp_start is null OR a.itemTimestamp >= @timestamp_start)
    AND (@timestamp_end is null OR a.itemTimestamp < @timestamp_end)
Run Code Online (Sandbox Code Playgroud)

非常慢(< 2000 条记录为 90 秒),因为执行计划使用 PK 列的聚集索引作为“my_table”:

在此处输入图片说明

为什么会发生这种情况以及如何优化查询性能?

sql-server execution-plan datetime

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

sp_BlitzCache 安装语法错误

尝试sp_BlitzCache在 SQL Server 2008上安装时,我得到:

Msg 102, Level 15, State 1, Procedure sp_BlitzCache, Line 2705 Incorrect syntax near '.'.
Msg 102, Level 15, State 1, Procedure sp_BlitzCache, Line 2715 Incorrect syntax near '.'.
Msg 102, Level 15, State 1, Procedure sp_BlitzCache, Line 2865 Incorrect syntax near '.'.
Run Code Online (Sandbox Code Playgroud)

第 2705 行是:

/* END Testing using XML nodes to speed up processing */
Run Code Online (Sandbox Code Playgroud)

第 2865FROM行是:

/* Set configuration values */
SELECT  @ctp = NULLIF(CAST(value AS INT), 0)
FROM    sys.configurations …
Run Code Online (Sandbox Code Playgroud)

sql-server sp-blitzcache

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

SQL Server 中每个保留字的大小写正确吗?

int大写INT或小写最正确的拼写是int什么?

reserved wordsSQL Server 中还有很多其他的。

如何找出每个单词的最佳情况?

例如,下图是一段随机代码,其中包含许多不同的单词,我如何验证这些单词是否具有“正确”大小写拼写?

如果我有 CS(区分大小写)数据库,这些事情会重要吗?
会不会影响性能?

让我们说select 1 from table1 where 1=1SELECT 1 FROM table1 WHERE 1=1

在此处输入图片说明

如何在 SQL Server 中将数据转换为适当的大小写

sql-server best-practices collation metadata

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

我的一台灾难恢复服务器每天 sp_configure 值都在变化

我们有一台 DR 服务器,每日数据库正在从生产恢复到 DR 服务器。

从上周开始,Sp_Configure 值(显示高级)正在发生变化。

我如何找出这些值的来源,它们与生产服务器 Sp_Configure 值不同。

sql-server

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

SQL Server 2016 SP1 CU3 清除计划缓存

每隔几分钟到大约一小时,进程缓存就会被刷新(但不是完全!)。如果我运行:

SELECT count (*) FROM sys.dm_exec_cached_plans
Run Code Online (Sandbox Code Playgroud)

……刚刚清零之后,计划的数量下降到几百个,然后逐渐增加到大约2000个,然后再次清零,依此类推。

服务器在 VMWare 上运行,它有128 GB的 RAM(SQL Server 最大服务器内存设置为102 GB,最小服务器内存设置为72 GB)。根据 SentryOne 的输出,我可以看到缓冲池消耗了~61 GB。我没有看到任何内存压力指标。

SentryOne SQL Server 内存使用情况

我还观察到,当我将最小服务器内存减少到 16 GB 时,进程缓存清除的频率急剧增加。

我的SQL Server版本如下:

Microsoft SQL Server 2016 (SP1-CU3) (KB4019916) - 13.0.4435.0 (X64)
Run Code Online (Sandbox Code Playgroud)

还有什么:

  • 我还没有尝试过 LPIM,因为它需要重新启动 SQL Server,但即使它是解决方案,我也很想了解为什么会发生这个问题。此外,Brent建议它仅在缓冲池修整的情况下有帮助。在我的情况下,缓冲池看起来完好无损,只有 proc 缓存受到影响。
  • 我没有找到任何可以对此负责的工作,也找不到任何真正的模式。
  • 如果有人发现这对修复/调查此问题有用,我可以访问 vCenter。但如果是这种情况,请您告诉我我应该在那里检查什么。

我怀疑 VMWare 可能在这里扮演了一些角色,但是当我检查来宾端可用的 perfmon 计数器时,我没有发现任何可疑的东西。

VM 内存性能计数器

我还根据Brent 的建议收集了sp_Blitz的输出:

**Priority 10: Performance**:

- Query Store Disabled - The new SQL Server 2016 Query Store …
Run Code Online (Sandbox Code Playgroud)

sql-server plan-cache sql-server-2016

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

从 Internet 访问 SQL Server AlwaysOn HA 侦听器

我已经成功地在两台服务器之间创建了一个 SQL Server AlwaysOn 高可用性组,并且一切似乎在内部都运行良好。每个副本都位于不同的物理位置,位于不同的防火墙和公共 IP 以及私有 IP/子网之后。现在,他们能够通过站点到站点 VPN 直接相互通信。

我用来访问数据库的应用程序能够连接到侦听器的 DNS。故障转移集群节点和 SQL 副本都有私有 IP,所以只要我在我的网络中运行应用程序,我就可以了。

我现在遇到的问题是我需要应用程序能够在世界任何地方使用。基本上,我需要能够从 Internet 连接到侦听器而无需 VPN,并且仍然能够利用 HA//Failover 功能。

如何做到这一点?似乎在线发布的唯一文档与 Azure 相关,但不适用于我的设置。

谢谢!

sql-server listener failover availability-groups

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