Questions tagged «sql-server»

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

1
SQL Server 2008 R2索引重建失败,严重性为17
有时,在进行索引维护期间,作业将因SEV 17错误而失败,因为该错误无法为正在重建的对象分配足够的空间。数据库的布局如下: Data_file1 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file2 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file3 PRIMARY 0 growth Less than 1% free Max Size UNLIMITED Data_file4 PRIMARY 250 MB growth Less than 1% free Max Size UNLIMITED 本质上,4个数据文件中的3个已满并且不允许增长,第四个已满并且允许增长。文件分散在不同的LUN上(以及混乱的原因)。因此,当我开始进行联机索引重建时,据我了解,如果需要任何额外空间,它将增长到Data_file4中并且很好,但是显然它正在尝试增长到不允许增长且失败的其他文件中。我无法重现此错误,但我想知道是否有人了解为什么会发生这种情况。 完整的SQL Server版本是2008 R2 Enterprise SP2 CU …

1
如何确定SSIS转换是非阻塞,部分阻塞还是完全阻塞?
有几篇博客声称将SSIS转换分为阻塞(异步),非阻塞(同步)和部分阻塞(异步)。 在研究特定问题时:多播是同步的(非阻塞)还是异步的(部分阻塞)? 一种资源声称异步:“多播是异步(也称为部分阻止)转换” 源:http : //social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx 另一个同步:https ://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/ 其他资源声称DQS清理转换是非阻塞转换,但在我看来,它是部分阻塞的。 请不要回答按类型分类的转换列表的链接。希望该问题的答案能够提供更严格的方法来证明正确的答案。 由于部分阻塞和阻塞转换会将数据移动到新的缓冲区,而不是在适当的缓冲区上进行非阻塞操作,因此我怀疑解决方案将是在转换执行期间监视缓冲区的创建,但我不确定(a )是否会产生明确的答案,以及(b)怎么做。 我相信无阻塞转换不会导致新的执行树开始,因此答案可能在于记录PipelineExectionTrees和PipelineExecutionPlan。这可以区分同步和异步,但不能区分部分阻塞和完全阻塞。

2
使用TM REQUEST和计划句柄0x0000挂起的会话
我们有一个定期事件,许多请求都挂在TM REQUEST上(来自sys.dm_os_waiting_tasks),并且没有任何进展。KILL对受影响session_id者无能为力 服务器运行数据库镜像(2008R2)。暂停和恢复镜像可解决此问题。 处于此状态的会话是无法杀死的。镜子上的负载是正常的,不是突发性的。一旦大量连接卡在此状态,系统将冻结,镜像将停止复制(所有查询均被阻止)。 任何人以前都看过这个,知道是什么原因造成的吗?错误日志中没有任何内容。
12 sql-server 

1
FreeProcCache和FreeSystemCache之间的区别
当前,DBCC FREEPROCCACHE当我想在运行SQL查询之间将信息从缓冲池中擦除时,我正在运行。不过,我正在审查此 Technet文章引用DBCC FREESYSTEMCACHE。什么FREESYSTEMCACHE擦除不会擦除FREEPROCCACHE?
12 sql-server  cache 

1
具有50个实例的SQL Server 2012 Standard服务器不会卸载实例
我怀疑这是一个问题,因为我们达到了SQL Server的50个实例的最大限制。自然,它不会安装更多实例。但是,似乎也不会卸载它们。更糟 在为实例选择SQL引擎之后单击下一步时,它将挂在“选择功能”对话框上。 我没有找到很多有关此的信息。最有趣的命中是:http : //social.msdn.microsoft.com/Forums/sqlserver/en-US/24a1e5f3-25f3-48c8-973a-4c6a18578e42/trying-to-uninstall-1-of-50-sql -server-2008-r2-express-hangs-on-please-wait 它还建议使用setup.exe一些参数来卸载实例,但是如果不启动GUI并进入失败的常规卸载,我将无法做到这一点。 高程无济于事。重新启动没有帮助。日志只说“被用户取消”,因为最后我必须将其杀死。在此之前,没有什么显而易见的。验证全部为绿色。 安装程序说它是SQL Server 2012 SP1-所有实例都位于11.0.2100。 我选择回答/关闭自己的问题,因为Microsoft已关闭故障单,其状态为“无法修复”。 希望他们会为SQL Server 2014修复此问题,但是我没有也不打算进行自我测试,也没有提供有关关闭票证的任何其他评论。

1
如果交易是“已提交”的,那么可以确定将其保存吗?
如果事务成功提交,那么我能否100%确保已将其写入数据库和日志文件?我可以确定数据已保存吗? 今天,我们的日志文件已达到驱动器的极限,并且出现了很多错误。此外,其他一些服务崩溃了。我们增加了磁盘并重新启动了服务器。 在启动过程中,服务器进行了“数据库恢复”-我可以确定一切都还好吗?


2
是否有任何第三方工具可以读取和/或分析SQL Profiler跟踪(.trc)文件[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 5年前关闭。 我有一个DBA在我的数据库中所做的跟踪中的.trc文件。我的PC上没有安装SQL事件探查器工具,因此无法查看内容并分析跟踪日志。如何在PC上未安装SQL事件探查器的情况下读取此文件?
12 sql-server  trace 

2
MERGE是否使用tempdb?
考虑以下查询: MERGE [Parameter] with (rowlock) AS target USING (SELECT @AreaId, @ParameterTypeId, @Value) AS source (AreaId, ParameterTypeId, Value) ON (target.AreaId = source.AreaId AND target.ParameterTypeId = source.ParameterTypeId) WHEN MATCHED THEN UPDATE SET target.Value = source.Value, @UpdatedId = target.Id WHEN NOT MATCHED THEN INSERT ([AreaId], [ParameterTypeId], [Value]) VALUES (source.AreaId, source.ParameterTypeId, source.Value); 统计信息I / …
12 sql-server  t-sql 

1
如何正确解决合并复制错误冲突
我们有SQL Server 2008 R2合并复制设置。 最近,我开始对某些表产生冲突,当我检查冲突查看器时,我可以看到赢者和输者列的值是相同的! 我确定这些数据只能由一个订户输入。 我曾经sp_showrowreplicainfo获得有关冲突行的更多详细信息,但我得到了2行:一行用于发布者,一行用于订阅者,两行的“版本”均为1。 我还实现了Brandon的方法:审核Merge Replication中的更改,但它仅显示正常的插入! 您能告诉我如何开始解决此类冲突吗?

3
更新具有数百万条记录的表,迄今已有4天
我当前正在更新具有数百万条记录的表,该表已经进行了4天,并且查询仍在执行。 我检查了活动监视器,它显示查询正在运行。 在事件日志中根本没有错误。 性能明智: 磁盘A中的Tempdb(850 GB可用空间) 磁盘B中的数据库文件(750 GB可用空间) 16 GB内存 请建议我该怎么办? 查询 UPDATE dbo.table1 SET costPercentage = ISNULL(t2.PaymentIndex, 1.0), t2.TopUp_Amt = (ISNULL(t2.PaymentIndex, 1.0) - 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00), Total_Tariff_Inc_t2 = ISNULL(t2.PaymentIndex, 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00) FROM dbo.table2 t2 WHERE LEFT(dbo.test1.procodet, 3) = LEFT(t2.ProviderCode, 3) COLLATE database_default

2
MPIO我应该期望什么吞吐量?
带有两个1 Gbps NIC的Dell PowerEdge 2950进入一个交换机上的两个1 Gbps端口,然后转到带有四个1 Gbps NIC且作为一个虚拟接口出现的NetApp。24个驱动器,7200k SATA,NetApp RAID-DP。我已使用Microsoft iSCSI启动器中的MPIO将每个主机NIC映射到NetApp。使用SQLIO进行测试,我的写吞吐量大约在200 MB左右,但是我的读接近100 MB。 难道我的读取不应该像我的写入一样接近200 MB吗?这是配置问题还是我不​​了解的基本存储问题? 更新:这是针对随机工作负载的IOPS。读是有意义的,但是,我不确定写要用20000做什么。SAN缓存为3.2 GB。SQLIO测试针对25 GB的文件。
12 sql-server 

1
SQL Server事务备份与日志
我继承了一个中等规模的对业务至关重要的SQL Server 2008数据库,并试图将我的头放在备份计划上。(我是开发人员,而不是DBA。) 现在,我们的系统设置方式有两个备份系统: 每周完整备份(.bak)和每小时事务日志(.trn)备份。我们保留了这些备份的几套,并定期将它们运到异地。 SQL Server日志(.ldf),恢复模式设置为Full。该文件与主.mdf文件位于单独的驱动器上,但不进行备份。 如果进行紧急还原(或将备份还原到开发机),我的程序是使用这些.bak文件,然后应用.trn文件。我们有一个脚本,可使该过程相对简单。 我的问题: 是否可以从.ldf文件还原数据库?什至是为了什么? 同时拥有这两个事务日志是否不必要? 备份.ldf文件重要吗?

5
如何从Azure SQL数据库中删除错误的执行计划?
DBCC FREEPROCCACHE在Azure SQL DB中不起作用。我还能如何强制计划以一种不会损害生产系统的方式将自己从缓存中踢出(即,我不能只是随意改变表)?这是专门针对由Entity Framework创建的SQL,因此它们不是自我管理的存储过程-它实际上是动态SQL。 (来源是错误的索引->错误的统计信息,等等。这些都是固定的,但是错误的计划不会消失。) 更新: 我选择了@mrdenny的解决方案,因为他先到达了那里。但是,我已经成功使用@Aaron Bertrand的脚本执行了工作。感谢大家的帮助!

3
级联物理操作:是否保证执行顺序?
在标准SQL中,union all不能保证a的结果以任何顺序排列。因此,类似: select 'A' as c union all select 'B' 可以按任何顺序返回两行(尽管实际上,在我所知道的任何数据库上,“ A”都将排在“ B”之后)。 在SQL Server中,这变成使用“串联”物理操作的执行计划。 我很容易想到,连接操作将扫描其输入,并返回具有可用记录的任何输入。但是,我在网上(此处)找到了以下声明: 查询处理器将按照操作员出现在计划中的顺序执行该计划,第一个是最上一个,最后一个是最后一个。 问题:实际上是这样吗?这保证是真的吗? 我没有在Microsoft文档中找到任何参考,从头到尾按顺序扫描输入。另一方面,每当我尝试运行它时,结果表明实际上确实按顺序处理了输入。 有没有一种方法可以让引擎一次处理多个输入?我的测试(使用比常量更复杂的表达式)是在启用了并行的8核计算机上进行的,大多数查询的确利用了并行性。

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.