我想将我的 SQL Server 2008 企业版升级到 SQL Server 2016 标准版;然而,一个数据库在多个文件组上使用表分区(用于大型日志表,每天是一个分区)
我在SQL Server 2016 的版本和支持的功能中的“RDBMS 可扩展性和性能”一节中看到,它说标准版支持表和索引分区,但不支持分区表并行。
我不确定我是否完全理解这样做的后果。
就我而言,这究竟意味着什么,它将如何影响数据库的性能?
我们创建了一个 Windows 故障转移群集,然后添加了两个 SQL Server 实例作为 SQL Server 故障转移群集的节点。
我们在 SQL 配置管理器中将服务器设置为使用“AlwaysOn 可用性组”。
为了测试故障转移,我加载并运行了一个长查询,然后通过使用故障转移群集管理器停止活动节点上的群集服务来关闭活动节点。
查询在没有连接的情况下中断,在节点耗尽和新节点接管之前,服务器在大约 20 秒内显示为不可用。
我做错了吗?我应该如何配置它以便几乎没有连接丢失?
AlwaysOn 不是一直开启吗?
最近从 SQL Server 2008 升级到 2016,在兼容模式 100 下运行了 4 个月,一切都进展顺利(快速)。经过大量测试并运行迁移顾问后,我决定轻弹“开关”并将兼容性级别更改为 130 ...
这对相当多的 sprocs/queries 产生了不利影响,其中一些在几秒钟内运行现在需要几分钟。CPU也因此而上升。
这些查询写得很好,我每晚都会重建索引和统计信息。
比较看起来相同的计划,稍微偏离几个百分比,但仍然是相同的计划!我认为 CE 没有得到很好的行数。
还有什么奇怪的,有时查询在 130 中运行良好,所以我认为一切都很好,但突然收到警报,查询被占用了 2 行不同的时间,然后我必须添加回 OPTION (QUERYTRACEON 9481) 才能得到它又快了。
我还有什么可以检查/做的事情来帮助这些查询恢复昔日的辉煌吗?
我应该从缓存中删除所有存储过程计划吗???
根据文档(SQL Server 2016 中已弃用的数据库引擎功能),sqlmaint.exe应该仍然可用(强调我的):
本主题介绍了SQL Server 2016中仍然可用的已弃用的 SQL Server 数据库引擎功能。这些功能计划在SQL Server的未来版本中删除。
...
工具:sqlmaint Utility ...
这是绝对没有列出的上的停止使用的功能列表。
但是,我sqlmaint.exe在最近安装的 SQL Server 2016 Express 系统上找不到。在以前的版本中,它与sqlserver.exe.
文档有错吗?还是文件位置移动了?还是我在安装过程中遗漏了什么?
(注意:受到重现此问题的评论的鼓励,我为此创建了一个Microsoft Connect 条目,该条目已迁移到UserVoice。)
我们有使用 SQL Server 2016 加密敏感列数据的要求,并选择了 Always Encrypted(AE) 功能来使用确定性方法加密这些列。
由于 AE 确定性加密不允许对这些加密列进行不等式、范围或 LIKE 查询,因此我们尝试使用对称密钥(列级)加密技术对这些类型的列进行加密。
在某些列(不需要任何不等式、范围或 LIKE 查询)上实现 AE 功能并在需要生成不等式、范围或 LIKE 查询的列上实现对称密钥类型加密是否是一个好习惯?
考虑到性能、安全性和维护性,将 AE 加密和列级加密结合在一个表上是一个好习惯吗?
请专家指教。
由于特定查询使用了错误的执行计划,我遇到了 100% CPU 峰值的大问题。我现在花了几个星期自己解决。
我的示例数据库包含 3 个简化表。
CREATE TABLE [model].[DataLogger](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[ProjectID] [bigint] NULL,
CONSTRAINT [PK_DataLogger] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE [model].[Inverter](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[SerialNumber] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_Inverter] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY],
CONSTRAINT [UK_Inverter] UNIQUE NONCLUSTERED
(
[DataLoggerID] ASC,
[SerialNumber] ASC
)WITH …Run Code Online (Sandbox Code Playgroud) performance execution-plan sql-server-2016 query-performance
很抱歉说得太长了,但我想给你尽可能多的信息,这样可能对分析有所帮助。
我知道有几个帖子有类似的问题,但是,我已经关注了这些不同的帖子和网络上的其他信息,但问题仍然存在。
我在 SQL Server 中有一个严重的性能问题,这让用户发疯。这个问题拖了好几年,直到2016年底由另一个实体管理,从2017年开始由我管理。
在 2017 年年中,我能够通过遵循 Microsoft SQL Server 2012 性能仪表板报告指示的索引提示来解决问题。效果立竿见影,听起来很神奇。最后几天几乎总是在 100% 的处理器变得超级安静,用户的反馈是响亮的。甚至我们的 ERP 技术人员也很高兴,因为通常需要 20 分钟才能获得某些列表,而最终他可以在几秒钟内完成。
然而,随着时间的推移,它慢慢开始恶化。我避免创建更多的索引,因为担心太多的索引会降低性能。但在某些时候,我不得不删除那些没有用的,并创建 Performance Dashboard 向我建议的新的。但是没有影响。
缓慢的感觉主要是在 ERP 中进行保存和咨询时。
我有一个专用于 SQL Server 2016 Enterprise(64 位)的 Windows Server 2012 R2,配置如下:
我需要备份 SQL Server 2016 的实例,我已经每晚备份了所需的数据库,但是我需要备份实例的用户和角色..... 我该怎么做?内置作业或自定义 T-sql 我可以安排运行吗?
如果有人能指出我正确的方向,我对 SQL 不太擅长
我对这个问题困惑了将近 1 周。希望我们社区中有人遇到过同样的问题并且已经找到了解决方案。
所以这是我的问题:
根据我们公司的政策,我们希望数据库邮件能够在启用 TLS 1.2 和禁用 TLS 1.0 和 TLS 1.1 的情况下通过端口 25 发送电子邮件。
我们的邮件服务器是 Exchange Server 2010,我们的 SQL Server 2016(开发者和企业版)盒子有 Windows Server 2016 标准版的操作系统。
我们的 SQL Server 版本是:
select @@version
----------------------------------------
Microsoft SQL Server 2016 (SP1-CU7-GDR) (KB4057119) - 13.0.4466.4 (X64)
Dec 22 2017 11:25:00
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor)
Run Code Online (Sandbox Code Playgroud)
我们有如下所示的 DB 邮件配置。
问题是每当我们打开 SSL
use msdb
exec dbo.sysmail_update_account_sp @account_id=2, @enable_ssl = 1;
Run Code Online (Sandbox Code Playgroud)
我们不能发送 db …
我想创建一个带有NOT NULLbool 列的表。
我用TINYINT与CHECK约束BETWEEN 0 and 1。约束是新的,因此是可信的
现在我希望 SQL 优化器现在知道这个列只能是 0 和 1,所以当我写查询时,col >= 2我会在实际执行计划中看到常量扫描(就像我在检查NULL或SELECT TOP (0)
但事实并非如此,它选择了表扫描。我还需要在此列上建立索引吗?
在我下面的测试中,我使用TINYINT了CHECK约束。用户定义类型基于TINYINTwith boundRULE和 good old BIT。
GO
CREATE TYPE dbo.myBool
FROM [INT] NOT NULL
GO
CREATE RULE dbo.R_Bool AS @value BETWEEN 0 AND 1
go
EXEC sys.sp_bindrule @rulename = N'R_Bool'
, @objname = N'myBool'
GO
DROP TABLE IF EXISTS dbo.RuleTest
CREATE …Run Code Online (Sandbox Code Playgroud) sql-server-2016 ×10
sql-server ×7
performance ×2
backup ×1
encryption ×1
failover ×1
partitioning ×1
t-sql ×1
tls-1.2 ×1