我收到了创建存储过程的请求,该存储过程将允许用户(有权访问数据库服务器)更改 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
我正忙于设计一个网站,我需要在我的 SQL Server 数据库中包含以下列:
我已经阅读了有关检查约束的内容,我想知道以下是否可行/以及它是否是上述问题的最佳解决方案:
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 2008 R2 中启用了审计来监视 DML 和 DDL 操作。
有没有办法将 SQLAudit 文件加载到数据库?或者任何其他方法将审计详细信息直接自动加载到数据库?
我正在尝试sp_blitz在 SQL Server 2014上运行,但似乎需要很长时间。正常长度是多少?
我们只有大约 30 个数据库。一个是 300GB,但它持续了 15 分钟。
我在 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”:
为什么会发生这种情况以及如何优化查询性能?
尝试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) int大写INT或小写最正确的拼写是int什么?
reserved wordsSQL Server 中还有很多其他的。
如何找出每个单词的最佳情况?
例如,下图是一段随机代码,其中包含许多不同的单词,我如何验证这些单词是否具有“正确”大小写拼写?
如果我有 CS(区分大小写)数据库,这些事情会重要吗?
会不会影响性能?
让我们说select 1 from table1 where 1=1和SELECT 1 FROM table1 WHERE 1=1?
我们有一台 DR 服务器,每日数据库正在从生产恢复到 DR 服务器。
从上周开始,Sp_Configure 值(显示高级)正在发生变化。
我如何找出这些值的来源,它们与生产服务器 Sp_Configure 值不同。
每隔几分钟到大约一小时,进程缓存就会被刷新(但不是完全!)。如果我运行:
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。我没有看到任何内存压力指标。
我还观察到,当我将最小服务器内存减少到 16 GB 时,进程缓存清除的频率急剧增加。
我的SQL Server版本如下:
Microsoft SQL Server 2016 (SP1-CU3) (KB4019916) - 13.0.4435.0 (X64)
Run Code Online (Sandbox Code Playgroud)
还有什么:
我怀疑 VMWare 可能在这里扮演了一些角色,但是当我检查来宾端可用的 perfmon 计数器时,我没有发现任何可疑的东西。
**Priority 10: Performance**:
- Query Store Disabled - The new SQL Server 2016 Query Store …Run Code Online (Sandbox Code Playgroud) 我已经成功地在两台服务器之间创建了一个 SQL Server AlwaysOn 高可用性组,并且一切似乎在内部都运行良好。每个副本都位于不同的物理位置,位于不同的防火墙和公共 IP 以及私有 IP/子网之后。现在,他们能够通过站点到站点 VPN 直接相互通信。
我用来访问数据库的应用程序能够连接到侦听器的 DNS。故障转移集群节点和 SQL 副本都有私有 IP,所以只要我在我的网络中运行应用程序,我就可以了。
我现在遇到的问题是我需要应用程序能够在世界任何地方使用。基本上,我需要能够从 Internet 连接到侦听器而无需 VPN,并且仍然能够利用 HA//Failover 功能。
如何做到这一点?似乎在线发布的唯一文档与 Azure 相关,但不适用于我的设置。
谢谢!
sql-server ×10
audit ×1
collation ×1
datetime ×1
failover ×1
listener ×1
metadata ×1
permissions ×1
plan-cache ×1
sp-blitz ×1