Questions tagged «sql-server-2008»

SQL Server 2008(主要版本10.00.xxxx)。请同时用sql-server标记。

3
使用带覆盖列的唯一非聚集索引而不是主键的含义
我们有一个大表[MyTable]目前既有Primary Key,和一个Unique Non Clustered Index在同一列([KeyColumn])。U NC索引还具有其他覆盖列。 在同一列上同时拥有PK和唯一NC索引似乎是多余的,因此我考虑删除主键,而是出于引用完整性的目的而使用唯一非聚集索引。 请注意,该表完全由另一列群集。 即所以我们有: ALTER TABLE [MyTable] ADD CONSTRAINT [PK_MyTable] PRIMARY KEY NONCLUSTERED ([KeyColumn]) GO 和 CREATE UNIQUE NONCLUSTERED INDEX [IX_MyTable_SomeIndex] ON [MyTable] ([KeyColumn]) INCLUDE ([Column1], [Column2]) GO 据我所知,不可能将覆盖列添加到主键,所以我打算这样做: 放弃依赖于的外键约束 MyTable.KeyColumn 将主键MyTable.KeyColumn完全放在 将外键重新添加到表中(即RI将通过强制执行MyTable.KeyColumn) 我能想到的唯一含义是,我们不会在ERD图上看到可视键符号,并且由于包含了列,因此(叶)索引密度会降低。 我已阅读/programming/487314/primary-key-or-unique-index,并对这样做的完整性和性能方面感到满意。 我的问题是:这种方法有缺陷吗? 编辑 我要完成的任务:性能优化和春季大扫除。通过删除PK或索引,我的索引所需的页面将更少=更快的写入速度,再加上维护/操作的好处,即减少索引以保持碎片整理等。 为了提供一些背景知识,我从来没有过没有PK的表被引用过。但是,在表中添加了带有覆盖列的NC索引这一事实意味着我需要调整自己的想法。

4
处理CXPACKET等待-设置并行性的成本阈值
作为我先前对Sharepoint网站进行性能故障的先前问题的补充,我想知道我是否可以对CXPACKET等待做点什么。 我知道下意识的解决方案是通过将MAXD​​OP设置为1来关闭所有并行性-听起来是个坏主意。但是另一个想法是在并行开始之前增加成本阈值。执行计划成本的默认值5相当低。 因此,我想知道是否存在已经写好的查询,该查询将为我找到执行计划成本最高的查询(我知道您可以找到执行时间最长的查询,依此类推-但是执行计划成本是否可在某处检索到,也可以),这还会告诉我是否已经并行执行了这样的查询。 是否有人手头有这样的脚本,或者可以将我指向相关DMV,DMF或其他系统目录视图的方向,以找出答案?

3
为什么我的ORDER BY在EXCEPT(慢)之前而不是在(快)之后对两个表排序?
SQL Server 2008 R2查询优化器难题 我们有两个表,每个表都包含900万行。70.000行不同,其他相同。 快13秒 select * from bigtable1 except select * from similar_bigtable2 这样可以对输出进行排序,而且速度也很快(13秒), select * into #q from bigtable1 except select * from similar_bigtable2 select * from #q order by sort_column 尽管这非常慢: ;with q as ( select * from bigtable1 except select * from similar_bigtable2 ) select …

4
是否可以在不使用Integration Services的情况下导出维护计划?
我正在尝试从SQL Server实例导出简单的维护计划。 我想检查导出到源代码管理中,并将导出的维护计划应用于功能相同的实例。 StackOverflow和SQL Server新手建议使用Integration Services导出维护计划。 当我尝试连接到导出目标上的Integration Services时,出现以下错误: 连接到“ WEBSERVER”计算机上的Integration Services服务失败,出现以下错误:指定的服务不存在为已安装的服务。 我们选择在WEBSERVER上禁用Integration Services,因为我们仅使用此框将数据提供给使用者应用程序。WEBSERVER上的所有数据都是从后端实例复制的。Integration Services被大量用于处理后端实例上的数据。 有没有书面记录的方式可以在不使用Integration Services的情况下导出维护计划?微软支持吗?

2
SQL Server TinyInt的存储
在SQL Server中,为什么将tinyint与9B存储在行中。由于某种原因,在NULL位图掩码的末尾似乎还有一个字节。 使用tempdb; 走 创建表tbl ( 我TINYINT不为空 ); 走 插入tbl(i) 值(1); 走 DBCC IND('tempdb','tbl',-1); 走 DBCC TRACEON(3604); -页面转储将进入控制台 走 DBCC PAGE('tempdb',1,168,3); 走 结果(由于DBCC PAGE首先显示了最低有效字节,所以我反转了字节): Record Size = 9B 10000500 01010000 00 TagA = 0x10 = 1B TagB = 0x00 = 1B Null Bitmap Offset = 0x0005 = 2B Our integer …

2
有多少存储过程参数太多?
我刚刚开始在SQL Server 2008中编写存储过程,并且有30多个参数。我从来没有写过超过10个参数,而这让我开始思考...什么时候有太多参数? 对于背景...这个程序基本上将INSERT单列成一个单一的表。也将有一个非常相似的地方。尽管稍小;对同一张表执行UPDATE的版本。大多数列相对较小,混合使用int和字符串(varchar(200))。 有什么问题;是好是坏; 一个具有大量参数的程序,我应该开始考虑其他模式的门槛是什么?

4
如何通过SQL Server代理从计划的作业中运行批处理文件
我正在尝试从SQL Server 2008 R2下的SQL Server代理作业中运行(Windows)批处理文件。在“作业步骤”中,我创建了一个新步骤,将其类型设置为“操作系统(CmdExec)”。我最初尝试仅将批处理文件名放在“命令”字段中。出现错误,它找不到文件。 然后我尝试了:cmd.exe c:\ test.bat 这开始了,但是从来没有完成(而且看起来它实际上并没有在工作)。 我尝试将批处理文件名括在引号中:cmd.exe“ C:\ test.bat”,但这也没有任何区别。 使它起作用的神奇组合是什么?


5
SQL Server备份-几个问题
我们在星期五的晚上9点运行每周备份工作,并且在磁盘空间(有时会变得非常低)和性能方面遇到一些问题。我们正在考虑精简/优化发生的事情,并希望您提出宝贵意见。 特别: 备份过程大约需要4个小时来更新统计信息。我们可以安全地禁用此过程以节省时间吗? 我们非常经常地在磁盘空间上运行不足,想知道是否应该重新调整该过程。当前,它创建备份,然后删除以前的备份,这就是占用磁盘空间的原因。我们可以安全地删除前一首,然后做备份? 任何其他评论或意见将非常受欢迎编辑:服务器上SQL文件的总大小约为35GB。一个db的大小约为25GB,而其他六个共享的磁盘则构成了另外10个左右的GB。

3
快照复制保留
我已经在我的SQL Server 2008生产服务器上设置了快照复制,我只是注意到快照文件夹中存在可追溯到一年前的快照。如何更改这些快照的保留时间?我特别希望它可以将快照保留5天。 这是我正在查看的文件夹的屏幕截图:


4
何时使用XML数据类型
我负责在项目上创建数据库。我们的字段很少会具有值(每10,000条记录中有1个),我正在尝试找出将其存储在数据库中的最佳方法。 据我所知,我有3种选择: 在表格中为每个附加值添加一列 添加一个链接表,该表引用原始表,并且仅在需要存储值的位置才有记录 在原始表中使用XML数据类型,并在其中存储所有值。 还有其他我没有考虑的选择吗? 我正在尝试找出每种方法的利弊。据我所知,1是最简单的,2将占用最少的空间,但是我一直在努力寻找3的许多资源。

3
从C#VS SSMS执行相同的请求会产生不同的执行时间
我有这样的要求 SELECT [EstimateId], [CreationUserId], [EstimateStatusValueId], [LanguageId], [LocationId], [EstimatorUserId], [FilterUnitSystemTypeId], [EstimateNumber], [RevisionNumber], [CreationDate], [ModificationDate], [ProjectDescription], [IsBsdq], [ClosingDate], [ClosingTime], [ClosingUpdatedOn], [DeadLineDate], [IsReceived], [Inclusion], [Exclusion], [Misc], [Note], [WorkDeadLines], [Comments], [Validity], [PlansLocation], [PlansReceivedFrom], [Price] FROM [Estimate].[Estimates] ORDER BY [ClosingDate] ASC, [ClosingTime] ASC 当我在SSMS中运行此查询时,我的执行时间为953ms,但是当我从C#中的Linq查询中运行此查询时,我的执行时间为1813ms。 Linq查询使用“ .Net SqlClient数据提供程序”,并针对EntityFramework(EDMX文件)发出。这可能是一个问题吗? 有谁知道为什么我在相同请求但针对同一数据库从不同上下文执行的那些请求的执行时间之间有很大差异? 我验证了两个请求的所有执行计划,并且它们使用相同的索引来满足各自的查询。 为了查看C#请求的执行计划,我使用SQL事件探查器捕获了Show Plan XML事件,并将其与SSMS之一进行比较,并且两者相同。



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.