Questions tagged «sql-server»

所有版本的Microsoft SQL Server(非MySQL)。还请添加特定于版本的标记,例如sql-server-2016,因为它通常与问题相关。

2
启用S​​QL Server全文索引后更新查询的速度变慢
我有一个asp.net网站,其中有许多针对我的数据库运行的插入,更新和删除查询。 几天前,我在一个表的两列上创建了全文索引。之后,我意识到当网站在该表上运行更新查询时,SQL Server进程的内存和磁盘使用率正在跳跃,更新速度变慢。在创建全文索引之前,查询运行没有任何性能问题。 我还意识到以前非常简单的更新查询现在变得很复杂,因为执行计划现在具有全文索引更新之类的功能。这是新的执行计划的一部分,该计划在启用全文本后变得很复杂: 在更新网站内容的几个小时中,我运行了5000个更新查询,并且我认为每次为每行完成全文索引过程。 我应该在开始更新行时禁用全文本扫描,然后重新启用它(如此相关问题所示)吗? 我可以告诉SQL Server在5分钟内停止全文索引编制,然后开始对新数据编制索引吗? 有更好的选择吗?我正在使用SQL Server 2012。

2
TDE准备:用于还原的密钥/证书备份
我正在开发环境中工作,以更好地了解TDE加密。我让它与另一台服务器上的备份和还原一起工作。有几个问题,我知道我需要使用相应的私钥来备份证书。 USE master; GO BACKUP CERTIFICATE Test TO FILE = 'C:\Test.cer' WITH PRIVATE KEY (FILE = 'C:\Test.pvk', ENCRYPTION BY PASSWORD = 'Example12#') 发生故障时,需要在新服务器上移动/还原这些文件。如果需要还原到另一台服务器,还需要从源服务器备份什么呢? 还有关于私钥存储的建议吗?目前,我的想法是将证书,私钥和密码备份到KeePass数据库中,该数据库将单独备份并在异地复制。 但这留下了将KeePass私钥备份到哪里的问题?

2
为什么会出现async_network_io等待类型?
上周,我们的数据库发生了一些奇怪的事情。突然,该应用程序对无法保存新实体等的用户阻止了。在查看了SQL Server的活动监视器(带有兼容模式2005的2008)之后,我看到了以下三个条目: 一段时间后,用户获得连接超时。当我杀死进程64时,它们可以再次正常保存。 问题在于,即使有代码可以防止这种情况发生,他们试图在块中保存的实体也多次插入数据库(最多3次)(数字列必须唯一但没有约束) ...检查发生在代码中)。 我们使用实体框架6.0。 你们谁知道为什么和何时出现这些ASYNC_NETWORK_IO等待类型,以及如何避免它们? 它们到底是什么意思?

1
为什么我的Azure SQL Server这么慢?
当前,我们有一个功能很差的虚拟机,并建议迁移到具有更好规格的Azure VM。问题是,即使Azure VM具有更高的规格,它也比原始VM慢得多。 原始服务器是具有2GB内存的2核VM,它也是Web服务器。它正在运行Microsoft SQL Server Web Edition 2008 R2,并且由于该服务器还用于其他用途,因此我们不得不将SQL Server中的最大服务器内存限制为512MB。 新服务器是具有7GB内存的4核VM,仅是数据库服务器。它正在运行Microsoft SQL Server Standard Edition 2008 R2,并且我们没有限制SQL Server可以使用的内存量。 这是在镜像环境中设置的两台服务器之一,但是我正在运行测试的数据库未镜像。目前,该服务器上的其他数据库通信量不大(实际上,在我运行这些测试时,活动监视器未显示其他DB上的活动)。 我确实意识到Azure VM的一个问题是硬盘驱动器是一种网络资源,因此这将成为速度下降的根源,但是即使IO统计数据中显示了0次物理读取,它仍然会变慢。 我已在Azure VM 上遵循此页面上的调优建议,包括剥离磁盘(每个驱动器两个磁盘)并将日志和数据文件放在单独的驱动器上。 我唯一没有做的事情就是启用页面压缩,限制数据库的自动增长以及将SQL Server错误日志和跟踪文件目录移动到数据磁盘。我也没有在旧服务器上做到这一点。 旧服务器没有完成任何调优,并且日志和数据文件位于未分割的同一驱动器上。 当前服务器上的数据库为65 GB(45个数据和20个日志),这太大了,无法传输到新服务器,因此我正在较小的DB(6个数据和13.5日志)上进行测试 这是旧服务器上的结果,CPU time = 1311 ms, elapsed time = 1057 ms.新服务器上CPU time = 1281 ms, elapsed time = 2525 ms. 的结果是。这只是一次运行,但是结果代表了我通常看到的内容。 …

1
为什么在此查询中不使用主键(集群键)?
我有一个SQL Server 2008 R2表,其表结构如下所示: CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] ASC) WITH …

1
查询计划更改SQL Server 2014中的性能更差
我们最近将服务器从SQL Server 2008R2升级到SQL Server2014。我们在2008R2中运行良好,但现在在2014年运行速度慢得令人难以置信,执行计划也很差。 我已经做了几次测试... 将2014 DB切换回2008/2012兼容模式。 使用分页测试查询。 两者都导致查询运行与SQL Server 2008R2相同,并且运行速度很快。 为什么计划如此糟糕,并且查询在SQL Server 2014中运行了这么长时间? 此图显示了2个查询,一个查询使用它在2008R2中运行的行号,然后第二个是分页修复。两者都在2014年运行,但都非常不同,但是在2008年,我们看到的效果与2014年使用分页时相同。

3
为SQL Server和NUMA配置RAM
偶然的数据库管理员在这里。 题: 即使该服务器的唯一目的仅是为SQL Server数据库引擎提供服务,您是否仍会手动限制SQL Server的最大RAM? 我有Microsoft Windows 2012 R2 Server,SQL Server 2012 Std,32GB RAM。 管理员不断登录到SQL Server,以使用其控制台和所有控制台。 其次,如何检查此Windows服务器是否启用了NUMA?

1
重置SQL Server使用率
在我的开发环境中,我正在处理查询。为此,我需要重置SQL Server内存,计划等,这些可以确保我的查询是重置所有值的服务器上唯一的压力/工作过程。 我正在做的事情很少 触发检查点 DBCC DROPCLEANBUFFERS; DBCC免费程序; DBCC FLUSHPROCINDB DBCC FREESESSIONCACHE DBCC SQLPERF(“ sys.dm_os_wait_stats”,CLEAR); 我做得对吗?还是我需要更多东西来清除或查看最新统计信息?

2
SQL Server 2008 R2分区-相同的文件组,1个文件,2个partition_numbers-帮助
我是从Brent Ozar指南中学到的,这是我第一次使用SQL Server进行分区,这真是太棒了:) 几次我遇到了一个奇怪的情况。当我跑步时: SELECT * FROM ph.FileGroupDetail ORDER BY partition_number Go 有一个相同的文件组两次显示2个不同的partition_number,一个正确地在末尾显示一个范围值,另一个在开始时显示一个空range_value。 点击这里放大图片 几个问题: 这是怎么回事,我哪里出错了? 我该如何解决该问题,这意味着如何在开始时摆脱一个分区,因为开始时我已经有一个空分区。 我曾尝试删除文件(在为空时工作)和文件组,但文件组说无法删除。 有人可以解释一下这是怎么发生的以及如何摆脱第2分区条目吗?

2
NUMA节点000上的PLE低,001上的高
我正在查看我们SQL Server上NUMA个节点之间的PLE(页面预期寿命),并且发现了一个相当奇怪的发行版。与001相比,NUMA节点000的PLE非常低。我不确定为什么会这样。我已经检查了环境中的其他多个SQL Server,并且其他生产服务器没有此行为。 系统正在具有256GB Ram的Dell m620上运行SQL Server 2012 Enterprise Edition。这是2插槽,6核(启用HT)的计算机。MAXDOP设置为6。AFAIK内存模块均匀地安装在CPU的内存组中 某些信息告诉我,NUMA节点000还有其他要执行的SQL任务,即其他节点,但是我忘记了在哪里听到/看到它。 @@Version 显示:Microsoft SQL Server 2012(SP1)-11.0.3412.0(X64)

6
具有只读应用程序意图的SSMS注册服务器
我们正在使用AlwaysOn进行SQL Server 2014 POC测试,其中一位用户被问到如何使用本地服务器组中注册的服务器使用ReadOnly Intent 保存SSMS的配置。这样,他们不必在每次需要访问ReadOnly副本时都键入别名。 不幸的是,与常规对象资源管理器不同,已注册服务器中没有添加ApplicationIntent选项的选项。 我从Microsoft那里碰到过有关更改RegSrvr.xml中的连接字符串的这篇文章。 https://connect.microsoft.com/SQLServer/feedback/details/786323/ssms-sql-server-management-studio-2012-missing-connection-properties-for-availability-groups 我尝试了他们的建议,当通过已注册服务器中的本地服务器连接时,它没有连接到正确的副本节点。 使用连接窗口>其他连接参数中的选项时,ReadOnly选项在对象资源管理器中可以正常工作。但是它不会保存对连接所做的更改。 有谁知道通过SSMS 使用ReadOnly Intent属性保存配置的任何替代解决方案吗?在此先感谢您的帮助。

1
为什么我的SQL Server查询在UPDATE上的行为不同于在SELECT上的行为?
我编写了一个SQL Server查询,该查询在对字段进行分区后将记录更新为具有序号。当我将其作为SELECT语句运行时,一切看起来都很不错: DECLARE @RunDetailID INT = 448 DECLARE @JobDetailID INT SELECT @JobDetailID = [JobDetailID] FROM [RunDetails] WHERE [RunDetailID] = @RunDetailID SELECT [OrderedRecords].[NewSeq9], RIGHT([OrderedRecords].[NewSeq9], 4) FROM ( SELECT [Records].*, [Records].[SortField] + RIGHT('0000' + CAST(ROW_NUMBER() OVER(PARTITION BY [Records].[SortField] ORDER BY [Records].[RunDetailID], [Records].[SortField], [Records].[PieceID]) AS VARCHAR), 4) NewSeq9 FROM ( SELECT [MRDFStorageID], [RunDetailID], …

1
SQL Server何时获取锁?
此处找到的SQL Server隔离级别列表指出,在事务内获取的写锁将保留到事务结束。但是,它没有提及何时获得这些锁。 默认情况下是否在事务开始时或仅在需要时获取锁?如果后者为真,那么在大型事务中尽可能晚执行写操作以最小化持有X锁的时间量是否有利?

1
从左侧出现第二个特定字符后删除字符串
我在表格栏中有这种类型的值 154646@8@486 45465@6464@654 等等 我该如何删除第二个@字符之后的所有内容?我需要展示 154646@8 45465@6464 我只能对所有人@但不能对第二个人 SELECT REPLACE(LEFT('45@Tra@lala', CHARINDEX('@','45@Tra@lala')-1),'_',' ') 返回45但不返回45 @ Tra 谢谢 :-)
10 sql-server 

1
具有多个.mdf文件的数据库
我已经在网上搜索,但没有找到我想要的东西。 据我所知,问题/查询是SQL Server中的数据库应该具有一个.mdf文件,也许还有一些.ndf文件和一个.log文件。 我已经看到许多具有一个mdf和多个ndf文件的数据库。但是最近我在服务器上遇到了一个数据库,其中每个数据库都有多个mdf文件。 我备份了一些数据库,将它们移动到另一台服务器,并将主文件恢复为.mdf,所有其他文件恢复为.ndf,除了日志文件恢复为.log之外。 现在我的问题是: 一个数据库具有多个.mdf文件是否有任何智慧? 拥有多个.mdf文件是否有任何弊端? 它是 SQL Server 2008 R2 64bit Enterprise Edition 任何在正确方向上的建议或指示都将受到赞赏。谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.