Questions tagged «sql-server-2014»

SQL Server 2014(主要版本12.0.xxxx)。还请标记sql-server。

1
全文:创建多个全文索引(服务器挂起)后,许多FT_MASTER_MERGE以SUSPENDED状态等待
我们在SQL Server 2014上进行了测试,当时我们有10个数据库,每个数据库中有100个不同的架构,每个架构中有10个小表(〜50行)(总共有10K个表),并在所有这些表上创建了全文本索引所有这些数据库中的表。 几分钟后,我们发现SQL Server停止接受任何连接(ADMIN:.连接除外)。如果重新启动服务器,则可以连接,但有时会再次挂起。经过一些调查,我们发现它是由消耗所有工作线程引起的dm_os_tasks,dm_os_waiting_tasks并向我们​​显示了状态中有很多FT_MASTER_MERGE等待SUSPENDED。我们用谷歌搜索“全文正在等待主合并操作”,但没有找到更多有关它的实际信息。 我们尝试了不同的全文目录配置:每个DB一个目录,每个模式一个目录,每个索引一个目录。无论如何,服务器将所有这些挂起的任务挂起。 什么是等待的根本原因,如何解决/减轻这种等待? 在如此大量的表上启用全文的推荐方法是什么?

1
无法截断事务日志log_reuse_wait_desc-AVAILABILITY_REPLICA
今天早上,我被我们的数据库之一的事务日志已满警报惊醒。该服务器是Alwayson群集,也是事务复制订阅服务器。我检查了log_reuse_wait_desc,它显示了logbackup。某人四天前不小心禁用了日志备份作业,我重新启用了日志备份作业,日志被清除。从凌晨4点开始,我想我将在那天早上晚些时候去上班,因为日志已经增长到400GB,所以请顺便去。 上午10点-我在办公室,我在缩小之前检查日志使用率,大约是16%。我很惊讶,检查显示复制的log_reuse_wait_desc。我很困惑,因为这是一个复制订户。然后,我们看到该数据库已启用CDC,并认为这可能是原因,因此禁用了CDC,现在log_reuse_wait_desc显示了AVAILABILITY_REPLICA。 同时,日志使用量仍在稳定增长,目前为17%。我检查了Alwayson仪表板,并检查了已发送和重做队列,两者实际上都为零。我不确定为什么日志重用显示为AVAILABILITY_REPLICA并且无法清除日志。 知道为什么会这样吗?

2
添加两列时查询不响应
当我在选择中添加两列时,查询没有响应。列的类型是nvarchar(2000)。这有点不寻常。 SQL Server版本为2014。 只有一个主索引。 整个记录只有1000行。 这是之前的执行计划(XML showplan): 之后的执行计划(XML showplan): 这是查询: select top(100) Batch_Tasks_Queue.id, btq.id, Batch_Tasks_Queue.[Parameters], -- this field btq.[Parameters] -- and this field from Batch_Tasks_Queue with(nolock) inner join Batch_Tasks_Queue btq with(nolock) on Batch_Tasks_Queue.Start_Time < btq.Start_Time and btq.Start_Time < Batch_Tasks_Queue.Finish_Time and Batch_Tasks_Queue.id <> btq.id and btq.Start_Time is not null and btq.State …

2
> =和>的步内统计值的基数估计
我正在尝试了解SQL Server如何尝试估计SQL Server 2014中的“大于”和“大于等于” where子句。 我想我确实了解基数估算,例如当我踏上台阶时 select * from charge where charge_dt >= '1999-10-13 10:47:38.550' 基数估计为6672,可以很容易地计算为32(EQ_ROWS)+ 6624(RANGE_ROWS)+ 16(EQ_ROWS)= 6672(以下屏幕截图中的直方图) 但是当我这样做 select * from charge where charge_dt >= '1999-10-13 10:48:38.550' (将时间增加到10:48,所以不是一步) 估计是4844.13。 该如何计算?

1
按计划备份和截断事务日志的最佳方法
我不是DBA,但是无论如何,我必须戴上DBA的帽子,并在SQL Server实例上设置维护计划。 因此,一段时间以来,我一直在SSIS过夜过程中运行“ 执行SQL任务”以执行备份-基本上运行master.dbo.xp_create_subdir以确保目标文件夹存在,然后运行BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT。 每当该任务失败时,其余过程都会中止,并且我会收到通知,并于第二天早上来通知事务日志的驱动器已满,因此我将手动截断它们并继续前进。 ..直到故事重演,并且事务日志再次超出了可用磁盘空间。 “手动截断”脚本如下所示: use Staging; alter database Staging set recovery simple alter database Staging set recovery full dbcc shrinkfile ('Staging_log', 0, truncateonly); go 因此,我对此感到厌倦,因此决定尝试正确地做事,并按照此处的步骤创建一个实际的维护计划: 问题是,我之前从未做过此事,所以我有几个问题: 像这样备份事务日志会自动截断它们,还是我需要做其他事情? 可以同时运行数据和事务日志备份吗?如果没有,那么执行此操作的正确方法是什么? 备份文件将在一夜之间被另一个过程获取,该过程将捕获服务器上的所有文件并将它们存储在其他位置-2天后使备份集过期是个好主意吗?我是否需要使它们全部过期? 清理任务分别删除的子文件夹下的“旧” .bak和.trn文件G:\Backups。那有意义吗? 最好在SSIS中执行此操作,以便在备份失败时/我可以在ETL中失败吗?还是我的ETL流程应该在乎? 抱歉,如果一个帖子中有太多问题,如果需要,我将编辑并询问多个问题-我认为它们都是紧密相关的。

1
关于tempdb版本存储的问题
我们今天遇到了一个错误: 错误:3967,严重性:17 从我可以看出,它基本上是“完整版商店”。这引起了一些我很难回答的问题,因为在我的商店里,我们从未遇到过此错误: 如果有预设的最大大小(基于总的tempdb大小或其他),它是动态的吗? 有没有可以使它动态化的设置? 我们可以基于此设置警报吗?(即用于跟踪大小的DMV等)

1
为什么MSDB数据库值得信赖?
TRUSTWORTHY如果您不小心,该设置可能会非常危险,除特殊情况外,建议保持关闭状态。但是默认情况下,MSDB数据库TRUSTWORHTY设置ON默认。我很好奇为什么? 我已经在BOL中阅读了此条目 注意默认情况下,MSDB数据库的TRUSTWORTHY设置设置为ON。使用默认值更改此设置可能会导致使用MSDB数据库的SQL Server组件出现意外行为。 但是我对细节感到好奇。为什么MSDB需要专门TRUSTWORTHY打开电源?它使用什么功能?



1
查询DMV sys.dm_os_performance_counters时返回零行
我有一个用户SQL Server 2014 Standard Edition (RTM)具有SYSADMIN与服务器视图状态权限的角色,但是当我执行DMV sys.dm_os_performance_counters返回没有记录。 知道权限有什么问题吗? @@ Version的输出: Microsoft SQL Server 2014-12.0.2000.8(X64)2014年2月20日20:04:26版权所有(c)Windows NT 6.3上的Microsoft Corporation标准版(64位)(内部版本9600 :)(管理程序)

1
在扩展事件会话上无法观看实时数据
我在PC上运行SQL Server 2014 Developer Edition。我正在尝试在system_health会话中查看数据。在SSMS中,我已连接到数据库,扩展了服务器/管理/扩展事件/会话。我看到AlwaysON_health(已停止)和system_health(正在运行)。 右键单击system_health会话时,出现以下错误: 使用提供的参数初始化存储失败。(Microsoft.SqlServer.XEventStorage)找不到名为“ system_health”的扩展事件会话。确保会话存在并已启动。(Microsoft SQL Server,错误:25728) 我展开system_health并看到目标package0.event_file和package0.ring_buffer。如果我右键单击任一目标并选择“查看目标数据”,则会收到此错误: 使用提供的参数初始化存储失败。(Microsoft.SqlServer.XEventStorage)无法查看功能'fn_MSXe_read_event_stream',因为该功能不存在或您没有权限。(Microsoft SQL Server,错误:15151) 该功能确实存在。我可以运行它: select * from fn_MSXe_read_event_stream('system_health', 0); 当我这样做时,会出现以下错误: Msg 25728, Level 16, State 10, Line 6 The Extended Events session named "system_health" could not be found. Make sure the session exists and is started. 我知道存在system_health会话。我在会话列表中看到: select * …

1
SQL Server配置中的SQL Server服务为空
从Windows 8.1升级到Windows 10时,我注意到SQL Server配置管理器中的SQL Server服务为空。目前,SQL Server仍然可以完美运行。SQL Server 2014安装在本地计算机上。 我已阅读了博客-https: //www.mssqltips.com/sqlservertip/2492/why-is-sql-server-configuration-manager-missing-services/和 http://www.sqlservercentral.com/Forums/Topic1469391- 1292-1.aspx,仍然无法解决该问题。 我备份了数据库,卸载并重新安装了该节点,但该节点仍然为空。我该怎么办? 更新了屏幕截图 SQL Server配置管理器屏幕

2
SQL Server的最大内存包括SSIS?
我在以下服务器上安装了2个sql服务器实例以及SSIS。 请注意,RAM的容量接近384 GB 这是我已应用于两个实例的最大和最小内存设置。我假设两个实例都将使用相同数量的资源,如果确实如此,那么184,320 MB(180 GB)是设置内存的一个很好的起点吗? 我将为SSIS分配多少内存?

1
如何判断备份文件是否包含CDC?
使用SQL Server 2008到2014年,我知道如何在启用更改数据捕获(CDC)的情况下备份和还原数据库,但是我正在寻找一种查询完整备份文件以确定其是否包含CDC数据的方法。 最好的办法是RESTORE FILELISTONLY从数据库获取文件列表,但获取CDC状态以确定还原是否需要使用KEEP_CDC标志? 有没有办法确定备份是否包含CDC数据? 谢谢!

3
程序集'system.web,版本= 4.0.0.0,文化=中性,publickeytoken = b03f5f7f11d50a3a'。在SQL目录中找不到
我正在尝试使用System.Web的HTTPUtility.UrlDecode方法部署SQL CLR函数,但是无法部署它。收到错误: .Net SqlClient数据提供程序:消息6503,级别16,状态12,行1程序集'system.web,version = 4.0.0.0,culture = neutral,publickeytoken = b03f5f7f11d50a3a。' 在SQL目录中找不到。 功能(作为SSDT项目的一部分): using System; using System.Web; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; public partial class UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true)] public static SqlString udf_UrlDecode(SqlString encodedXML) { string decodedXML; decodedXML = HttpUtility.UrlDecode(encodedXML.ToString()); return new SqlString(decodedXML); } } 与这个线程有关。我是带有VS2012 SSDT和数据库项目的SQL …

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.