Questions tagged «sql-server»

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

7
尽管总是说作业成功,但计划备份任务并不总是备份所有数据库
我在SQL 2008中有一项工作,该工作运行存储的proc来备份所有数据库。这每天通过sql server agent作业运行。 它每天都会成功退出,但是有些时候只有备份了一些数据库后才能成功退出。每次可以有不同数量的数据库。大多数情况下,它成功备份了所有数据库,但有时成功备份了2个,有时成功备份了5个,等等。 我在作业历史记录,事件查看器或SQL Server日志中看不到任何错误。 尽管该文件夹是可扩展存储卷上文件夹的“连接”,但备份仍在本地磁盘上进行。 操作系统是Windows 2003 64位,作为运行在Vmware ESXi 5主机上的虚拟机运行Sql Server 2008 Web版64位。 存储过程: ALTER PROCEDURE [dbo].[backup_all_databases] @path VARCHAR(255)='c:\backups\' AS DECLARE @name VARCHAR(50) -- database name DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name DECLARE @dbIsReadOnly sql_variant -- is database …

5
并行性最佳实践
一般而言,设置并行性的最佳做法是什么?我知道SQL Server默认0使用所有可用的处理器,但是您想在哪种情况下更改此默认行为? 我记得在某处(我必须去看这篇文章)读过一篇文章,对于OLTP工作负载,您应该关闭并行性(将maxdop设置为1)。我认为我不完全理解您为什么要这样做。 什么时候可以将maxdop保持为SQL Server(0)?什么时候关闭并行性(1)?您何时将maxdop明确声明给特定数量的处理器? 是什么导致并行性?

4
TempDB上的DDL争用
我有一个SQL Server 2005 Standard x64,在过去的几个月中,TempDB DDL争用一直遇到问题。服务器将在等待资源2:1:103(等待类型为PAGELATCH_EX)上发生争用。 当服务器处于正常负载时,该问题似乎偶尔发生。我一直在监视“销毁临时表”的速率,在我们在2:1:103遇到PAGELATCH_EX问题时,它的速率可能会跳到5,000+。根据我的阅读,该计数器在大多数情况下应该为0,但在大多数情况下,我们的计数器似乎保持在300-1100之间。仅当系统上用户很少时,计数器才会变为0。 我如何缩小在tempdb上导致DDL争用的原因,而不必在干草堆中寻找针头?


2
powershell获取sql服务器内存计数器并显示值
我正在编写一个powershell脚本来捕获以下SQL Server计数器: SQL Server:内存管理器:服务器总内存(KB) SQL Server:内存管理器:目标服务器内存(KB) 我的机器有3个SQL Server实例,所以我希望此脚本动态捕获所有计数器并仅报告1个样本的值。我试着写以下内容: Get-counter -List *SQL*Memory* | Select paths, counter | format-list # doesn't display full list Get-counter -List *SQL*Memory* | Select paths, counter | where {_.counter -like "*server memory*"} |format-list # displays nothing 最终,我想使用-computername参数跨多个服务器运行它,因此我希望它可以动态捕获。 谁能帮我找到缺失的东西吗?以下是我正在运行的确切脚本: Function checkTransactionsPerSecond([string] $Hostname ) { (Get-Counter -ListSet "*Databases").Counter | …

1
什么是剩余谓词?
尽管我可以在MSDN上在线找到谓词的定义: 是计算结果为TRUE,FALSE或UNKNOWN的表达式。谓词用于WHERE子句和HAVING子句的搜索条件,FROM子句的连接条件以及其他需要布尔值的构造。 我一直找不到残留谓词的定义。什么是剩余谓词?

3
任何减少我在生产中的特权但不会使我的工作过分困难的指示
在Windows 2008 R2上运行SQL Server 2005和2008。 我们将减少对开发人员的生产特权- 我想自己做为DBA一样,限制生产权并在需要时提升权限。 我的主要目标将是消除愚蠢的错误- 由数据库管理员做,devopers将有最多的生产读访问。我们喜欢表现得像我们是超级英雄,不会犯错,但是一直没有生产权是有道理的,这是一些人推荐的最佳做法。 最好的方法是什么?在日常使用和安装过程中,最痛苦的是什么? 当前,我们有一个DBA Windows组,该组对我们所有的服务器和数据库都有权限。 我也会对降低OS /远程登录权限感兴趣-但我最关心数据库权限。 我猜想我们需要提升特权才能以sa身份运行跟踪,并且可能需要进行一些所有权清除,才能删除旧登录名的SA权利。我们可能还会遇到什么其他问题? 感谢您的建议并分享您的经验!

3
在SQL Server 2008中使用varchar的速度影响
在过去,使用varcharover char是一个很大的问题,因为over varchar存储在与该行其余部分不同的页面上。如今,SQL Server 2008还是这样吗?我会看到将1-3 varchar(5)列更改为char(5)表中的列会获得任何内存/性能提升吗? a)说2.000.000行b)如果任何varchar列是索引/主键的一部分

2
SQL Server不应该支持RANGE吗?
作为开发网站并执行一些SQL Server的人,对我来说,SQL Server应该支持一个简单的子句(表明结果只包括特定范围的行)对我来说似乎并不费脑子。例如,第30到39行。 就目前而言,当SQL Server中的主要工作重点不是SQL时,实际上在许多Web开发人员的能力范围内实现了分页。 另外,它将大大简化由于联接和其他条件而可能已经很复杂的查询。 最重要的是,我认为这样的子句可能会随着时间的流逝而在内部进行优化的机会更大,因为该逻辑完全在Microsoft的控制之下。 不久前,我在另一个论坛上提出了这个问题,许多答复似乎表明这是不可取的。 假设所有现有的分页技术都将保留不变,那么不添加此类子句的可能原因是什么?对于像我这样的人来说,那就更好了。 任何人都可以以充分的理由说明为什么微软没有这样做吗?

2
可以同时在不同的表上运行两个DBCC INDEXDEFRAG命令吗?
我当前正在运行一个脚本,该脚本在SQL Server 2005数据库中的每个表上一次执行一个DBCC INDEXDEFRAG。由于空间限制和正常运行时间的要求,不能选择使用DBCC DBREINDEX而不是INDEXDEFRAG。 我注意到,某些表需要很长时间才能进行碎片整理。例如,如果我检查“ sys.dm_exec_requests”动态管理视图,则可以看到以下INDEXDEFRAG当前正在删除table_id为829610394的表的聚集索引: DBCC索引(0,829610394,1) 我知道碎片整理过程需要很长时间才能完成。撇开当前正在运行的脚本最终会对所有表进行碎片整理这一事实,在执行当前命令时在另一个表的聚集索引上手动运行另一个DBCC INDEXDEFRAG是否对我有什么危害?如果执行此操作,实际上是否会同时对两个表进行碎片整理?

2
集群索引现在必须-为什么?
早些时候,关于是否(始终)参与/避免聚集索引的辩论/讨论对我来说不是结论性的。 好吧,我知道有时要结合适当的特定目的和上下文来使用它们。 SQL Azure数据库群集索引要求: “ SQL Azure不支持没有聚簇索引的表。表必须具有聚簇索引。如果创建的表没有聚簇约束,则必须先创建聚簇索引,然后才能对表进行插入操作” 不符合先前的结论,理由和解释。 在先前的解释中,我遗漏了没有任何例外地严格施加聚集索引的基本原理是什么?

2
SQL Server的可序列化隔离级别是否锁定整个表
我和我的一位同事讨论了使用可序列化隔离级别的含义。他说它锁定了整个表,但是我不同意告诉他它有可能,但是它尝试应用范围锁,并且没有应用真正的序列化,如下所述:Serializable Isolation Level。 我在文档中也找不到“锁定整个表”的任何内容:SET TRANSACTION ISOLATION LEVEL。 该文档陈述了有关范围锁的许多信息,因此从理论上讲,您可以通过仅具有范围锁来锁定整个表,该范围锁可以锁定表中可能值的整个范围,但不会锁定表。 我在这里完全错了吗?它是否实际上锁定了整个表?

3
RAM或物理文件中的事务日志?
我是交易的初学者,只是有关交易日志的问题。我们知道在提交事务时,更改将写入事务日志,但是事务日志是否在RAM或物理文件中?如果它在RAM中并且发生系统故障时,显然RAM将被重新擦除,因此我们丢失了事务信息,那么如何恢复提交?

2
非常相似的查询,性能差异很大
我有两个非常相似的查询 第一个查询: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' and a.TargetTypeId IN (1,2,3,4,5,6,7,8,9, 11,12,13,14,15,16,17,18,19, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39, 41,42,43,44,45,46,47,48,49, 51,52,53,54,55,56,57,58,59, 61,62,63,64,65,66,67,68,69, 71,72,73,74,75,76,77,78,79) 结果:267479 计划:https://www.brentozar.com/pastetheplan/?id = BJWTtILyS 第二个查询: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' …


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.