Questions tagged «sql-server»

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

3
通过SQL Server 2012 OLAP多维数据集支持网站是否合理?
我的任务是为大型零售连锁店设计解决方案。他们希望允许其120万客户中的每一个都登录到网站上,以查看大约50个类别中最近购买的商品分布(当月,上个月,年初至今)。数据每天更新一次。 我正在考虑建立基于SQL Server 2012的OLAP多维数据集,并让网站直接利用主动缓存等功能来查询此多维数据集。但是,作为一名开发人员,我几乎没有SQL Server分析服务部分的经验,因此非常关注此解决方案的性能。 将网站直接连接到OLAP多维数据集听起来是否可行?这样的系统是否像SQL Server那样对来自多个用户的负载做出反应,使其成为一个合理的解决方案,还是它们的行为完全不同? 我不希望用户经常检查其状态,我当然会在Web服务器上使用缓存等。

1
具有LOG_BACKUP log_reuse_wait_desc的SQL Server 2012简单恢复模型
虽然我在做我自己的调查,没有人知道为什么在数据库SIMPLE恢复模型LOG_BACKUP的log_reuse_wait_desc? SQL Server 2012 SP1。数据库是在几周前创建的。没有复制,没有镜像,没有日志传送,而且从未有过这些。 我们做了备份数据库,并恢复到另一个实例,它显示了SIMPLE和NOTHING在log_reuse_wait对其他实例。但是我不认为还原到另一个实例是重现此问题的好方法,因为还原操作会前滚/回滚事务。

4
如何编写加总一列以创建离散存储桶的窗口查询?
我有一个表,其中包含一列十进制值,例如: id value size -- ----- ---- 1 100 .02 2 99 .38 3 98 .13 4 97 .35 5 96 .15 6 95 .57 7 94 .25 8 93 .15 我需要完成的工作有点难以描述,因此请耐心等待。我正在尝试做的是创建size列的聚合值,每当前一行的总和为1时(根据降序排列),该列的值就会递增1 value。结果看起来像这样: id value size bucket -- ----- ---- ------ 1 100 .02 1 2 99 .38 1 3 …

2
如何减少行估计以减少溢出到tempdb的机会
我注意到,当tempdb事件大量溢出(导致查询缓慢)时,对于特定的联接,行估计常常会偏离。我已经看到溢出事件是通过合并和哈希联接发生的,它们通常会将运行时间增加3倍至10倍。这个问题涉及如何在减少溢漏事件机会的假设下改进行估计。 实际行数40k。 对于此查询,计划显示错误的行估计(11.3行): select Value from Oav.ValueArray where ObjectId = (select convert(bigint, Value) NodeId from Oav.ValueArray where PropertyId = 3331 and ObjectId = 3540233 and Sequence = 2) and PropertyId = 2840 option (recompile); 对于此查询,该计划显示了良好的行估计(56k行): declare @a bigint = (select convert(bigint, Value) NodeId from Oav.ValueArray where PropertyId = 3331 and …

2
如果我对一个数据库进行故障转移,那么共享相同镜像端点的其他数据库是否也会进行故障转移?
我们有两个用于在单个SQL Server实例上进行镜像的数据库设置:测试数据库和生产数据库。两者都使用完全相同的端点镜像到另一台服务器。 如果我进入测试数据库的“数据库属性”并单击“故障转移”按钮,由于两个数据库共享一个镜像端点,并且它们的“服务器网络地址”属性相同,它也会对生产数据库进行故障转移吗? 我很担心,因为当我为第二个数据库设置镜像时,我不必配置任何新内容。它只是使用了所有现有信息。 如果我使用“数据库属性”中的“故障转移”按钮,会导致对使用该端点的所有数据库进行故障转移,还是仅对我正在查看其属性的特定数据库进行故障转移?

3
获取定界字符串中值的第二次或第三次出现
我有下表: ========================================================== | Name_Level_Class_Section | Phone Num | ========================================================== | Jacky_1_B2_23 | 1122554455 | | Johnhy_1_B2_24 | 1122554455 | | Peter_2_A5_3 | 1122554455 | ========================================================== 我正在考虑简化我的SQL语句,如下所示: select *, substring(Name_Level_Class_Section, CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_', Name_Level_Class_Section) + 1)) + 1, CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_',Name_Level_Class_Section)+1))+1))- CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_',Name_Level_Class_Section)+1))) as CLA from Bookings order by CLA asc, Name_Level_Class_Section …

5
SQL Server中的最大内存设置
我在单个专用服务器上运行SQL Server 2008和基于Web的应用程序,仅提供2Gb内存。 如其他地方所述,SQL Server通常会占用高达98%的物理内存,这似乎减慢了服务器上运行的Web应用程序的速度。 在SSMS的服务器属性中的“内存”下,“最大服务器内存”(以Mb为单位)设置为:2147483647 我的问题是,考虑到我拥有的可用内存量,并且同一台服务器也正在运行Web应用程序,建议在最大服务器内存框中放入的建议数量是多少? 此外,在SQL Server运行时更改此数字是否安全? 感谢您的意见。

3
自动十进制舍入问题
这个问题相对简单。我需要计算3列,中间结果是很大的小数,并且SQL Server早就遇到了一个问题,即无论是否进行任何类型的转换,SQL Server基本上都会舍入小数。 例如,让我们做一个简单的除法1234/1233。计算器将产生1,00081103000811。但是,当我在SQL Server上执行此操作时,我们得到以下信息: -- Result: rounded at 1.000811000... with trailing zeroes up until the 37 precision SELECT CAST(CAST(1234 AS DEC(38,34))/CAST(1233 AS DEC(38,34)) AS DEC(38,37)) -- Result: rounded at 1.000811 SELECT CONVERT(DECIMAL(38,32), 1234)/CONVERT(DECIMAL(38,32),1233) -- Correct result at 1,00081103000811 -- But this requires the zeroes to be put in manually …

3
tempdb日志文件的最佳做法
我在这里和那里已经读过许多关于如何配置tempdb数据文件的博客,但是我没有找到有关tempdb日志文件的任何信息。 这是我目前在tempdb中使用的策略: 我已使用Paul Randal的建议来分割tempdb数据文件 我已将tempdb数据文件的大小设置为最大,并禁用了自动增长。例如,我有100gb的可用磁盘空间,并将8个tempdb数据文件的大小分别设置为10gb。如布伦特·奥扎尔(Brent Ozar)所建议,这可以防止磁盘碎片,而且我的日志文件还有20GB可用空间。 但是就像我说的,没有人在谈论tempdb日志文件。我该怎么办?在我的设置中,此文件与tempdb数据文件位于同一位置。我应该与tempdb日志文件一起使用的大小和自动增长值是多少?

2
SQL Server数据压缩绝对适合只读数据库吗?
我读过一些有关SQL Server数据压缩的文献,指出写入成本增加到通常需要的四倍。似乎还暗示这是数据压缩的主要缺点,强烈暗示对于只读存档数据库,使用100%填充页面的数据压缩将提高性能(仅少数例外)。 以上陈述正确吗? 数据压缩与其他方式(用于读取)之间的主要“差异”是什么? “ CPU + x%”? “ IO -y%”? 页面拆分发生了吗? tempdb的用法? RAM使用率? 和写作? 出于这个问题的目的,您可以将上下文限制为大型(> 1TB)数据库的PAGE级压缩,但是始终欢迎其他注释。 参考文献: SQL Server存储引擎博客(DW场景显示压缩非常有优势) 数据压缩:策略,容量规划和最佳实践 确定压缩内容的更详细方法涉及分析每个表和索引的工作负载特征。它基于以下两个指标: U:相对于该对象的总操作数,特定表,索引或分区上的更新操作数的百分比。U的值越低(即不经常更新表,索引或分区),则它越适合用于页面压缩。 S:表,索引或分区上的扫描操作相对于该对象上的全部操作的百分比。S的值越高(即,表,索引或分区大部分被扫描),则用于页面压缩的候选值越好。 以上两种情况都明显偏向于建议为DW样式的数据库建议页面压缩(读密集型/排他性大数据操作)。

1
如何插入默认行?
如果我创建一个以标识列作为主键的表,而其他所有列均具有默认值,例如 create table rr (id int identity(1,1) primary key, dt datetime default getdate())
11 sql-server 

1
为什么SQL Server在将它与一个int变量进行比较之前需要将count(*)结果转换为int?
我的应用程序中有很多查询,在Have子句中,我有count聚合函数与int变量的比较。在查询计划中,我可以在比较之前看到一个implicit_convert。我想知道为什么会这样,因为根据sql Server文档,count函数的返回类型是int。那么为什么要有一个隐式转换来比较两个int值呢? 以下是一个这样的查询计划的一部分,其中@IdCount被定义为一个int变量。 |-过滤器(WHERE:([[Expr1022] = [@ IdCount]))) |-计算标量(DEFINE:([[Expr1022] = CONVERT_IMPLICIT(int,[Expr1028],0))) |-流聚合(组BY:([[MOCK_DB]。[dbo]。[Scope]。[ScopeID])DEFINE:([Expr1028] = Count(*)))


4
某些用户查询缓慢
我从C#.NET Web应用程序中调用了几个查询,这些查询对我来说总是很快的(我是SQL Server上的本地管理员),但是对于一组用户(具有所需权限的域组)而言,查询速度却非常慢它在应用程序中超时的点。 是什么导致完全相同的查询针对不同的用户运行不同? 更多信息: 该查询是C#代码中的内联SQL,而不是存储过程 该应用程序使用域身份验证,用户和我自己都可以通过该应用程序运行查询 似乎问题出在不同的计划上,其中一个已被缓存,因此这对于不同的用户来说是不同的。某些因素正在影响缓存,因为现在通过应用程序查询对我来说很慢,而在SQL Server Management Studio中则很快。

1
由于索引锁定顺序,SQL Server两次更新发生死锁
我有两个UPDATE-一个先锁定CI,然后再锁定NCI(处于状态),因为status列也在被更新。另一个已经在NCI上拥有U锁,因为它知道它正在更改,然后尝试在CI上获取U锁。 强制这些序列化的最简单方法是什么?使用TABLE级别的提示似乎很奇怪,因为这是一个内部索引问题-仅涉及一个表-UPDLOCK和HOLDLOCK是否会自动应用于该表上所需的所有索引,从而强制对其进行序列化? 以下是查询: UPDATE htt_action_log SET status = 'ABORTED', CLOSED = GETUTCDATE() WHERE transition_uuid = '{F53ADDDA-E46B-4726-66D8-D7B640B66597}' AND status = 'OPEN'; 一个X锁定CI(在CREATED列上)中的行,然后尝试X锁定包括状态列的NCI。 UPDATE htt_action_log SET status = 'RUNNING {36082BCD-EB52-4358-E3D3-4D96FD5B9F0F} 1360094342' WHERE action_uuid = (SELECT TOP 1 action_uuid FROM htt_action_log WHERE transition_uuid = '{F53ADDDA-E46B-4726-66D8-D7B640B66597}' AND status = 'OPEN' ORDER BY action_seq) 这个U锁定相同的NCI-对于我猜的嵌套查询,然后锁定CI进行更新。 …

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.