Questions tagged «sql-server»

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

19
在表名中添加'tbl'前缀真的有问题吗?
我正在观看Brent Ozar的一些视频(例如,像这样的视频),他建议不要在表前添加‘tbl’或‘TBL’。 在互联网上,我发现一些博客说它没有为文档添加任何内容,而且“读取它需要更长的时间”。 问题与考虑 这真的有问题吗?因为自从我的第一份dba工作以来,我就在表的前面加上“ tbl”(高级DBA告诉我要对组织进行此操作)。 这是我需要摆脱的东西吗?我进行了一些测试,复制了一个很大的表并为其赋予了'tbl'前缀,而其他表则保留了该表,并且我没有发现任何性能问题。

5
何时在INT上使用TINYINT?
通常,我总是使用Ints。我知道,从理论上讲,这不是最佳实践,因为您应该使用可以保证存储数据的最小数据类型。 例如,最好tinyint在知道将要存储的唯一数据是1、0或null(极少有机会将其扩展到2或3)后使用。 但是,我知道这样做的唯一原因是出于存储目的-在一行中使用1个字节而不是4个字节。 除了节省硬盘驱动器上的空间之外,仅使用tinyint(或smallint什至bigint)有什么影响int?


6
每组检索n行
我经常需要从结果集中的每个组中选择一些行。 例如,我可能想列出每个客户的'n'个最高或最低最近订单值。 在更复杂的情况下,每个组要列出的行数可能有所不同(由分组/父记录的属性定义)。这部分绝对是可选的/为了获得额外的荣誉,并不旨在阻止人们回答。 解决SQL Server 2005及更高版本中此类问题的主要选项是什么?每种方法的主要优点和缺点是什么? AdventureWorks示例(为清楚起见,可选) TransactionHistory对于每个以M到R(含)开头的字母的产品,从表中列出五个最近的交易日期和ID 。 再次相同,但是n每个产品都有历史记录行,其中n是DaysToManufacture产品属性的五倍。 相同,在特殊情况下,每个产品只需要一个历史记录行(单个最近的条目,由TransactionDate,打破平局)TransactionID。



5
是否建议SQL Server就地升级不如从前?
从SQL Server 6.5开始,我就一直在使用SQL Server进行断断续续的工作,至今仍然在我脑海中响起的那条老建议是永远不要进行就地升级。 我目前正在将我的2008 R2 DEV和TEST系统升级到SQL Server 2012,并且需要使用相同的硬件。不必还原我的Reporting Services配置的想法非常吸引人,我真的很不明智。没有涉及分析服务,也没有任何异常或非标准的服务-仅安装了数据库引擎和报告服务。 有没有人遇到就地升级的严重问题?还是应该重新评估就地升级的立场?

5
哪个数据库可以处理数十亿/万亿记录的存储?
我们正在研究开发一种捕获和分析Netflow数据的工具,我们从中收集了大量的数据。每天我们都会捕获大约14亿条流记录,这些记录以json格式显示如下: { "tcp_flags": "0", "src_as": "54321", "nexthop": "1.2.3.4", "unix_secs": "1352234521", "src_mask": "23", "tos": "0", "prot": "6", "input": "105", "doctets": "186", "engine_type": "0", "exaddr": "2.3.4.5", "engine_id": "2", "srcaddr": "9.8.7.6", "dst_as": "12345", "unix_nsecs": "752265174", "sysuptime": "2943529544", "dst_mask": "24", "dstport": "80", "last": "2943523241", "srcport": "52672", "dpkts": "4", "output": "111", "dstaddr": "6.5.4.3", "first": "2943517993" …

4
为什么我的查询突然比昨天慢?
[薪水] (检查一项) [ ] Well trained professional, [ ] Casual reader, [ ] Hapless wanderer, 我有一个(选中所有适用项) [ ] query [ ] stored procedure [ ] database thing maybe 运行良好(如果适用) [ ] yesterday [ ] in recent memory [ ] at some point 但现在突然变慢了。 我已经检查过以确保它未被阻止,并且它不是某些长期运行的维护任务,报告或其他带外流程的受害者。 有什么问题,我应该怎么做,我可以提供什么信息以获得帮助? [*Insert appropriate closing remarks*]

4
<>和!=在SQL Server中性能相同的权威来源
请在SO上考虑以下答案,以确保向&lt;&gt;操作员提出以下要求: &lt;&gt;与...相同!=。 但随后有一个评论者插话说: 的确,它们在功能上是相同的。但是,SQL优化器如何使用它们却大不相同。= /!=可以简单地评估为true / false,而&lt;&gt;表示引擎必须查看并查看该值是大于还是小于,这意味着更多的性能开销。编写昂贵的查询时要考虑的一件事。 我相信这是错误的,但是为了解决潜在的怀疑者,我想知道是否有人可以提供权威或规范的信息来证明这些运算符不仅在功能上相同,而且在各个方面都相同?


2
在其他域中使用Windows身份验证连接到SQL Server
我正在尝试连接到另一个域中VPN上的远程SQL Server。当我在SQL Server上输入服务器名称并选择“其他连接参数”以添加学校需要的一些其他东西时: Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password 我收到以下错误: 登录失败。该登录名来自不受信任的域,不能与Windows身份验证一起使用。


1
合并目标表的子集
我正在尝试使用一条MERGE语句从表中插入或删除行,但是我只想对这些行的子集进行操作。的文档中MERGE有一个措辞非常强烈的警告: 重要的是仅指定目标表中用于匹配目的的列。即,指定目标表中与源表的相应列进行比较的列。不要尝试通过过滤掉ON子句中的目标表中的行来提高查询性能,例如通过指定AND NOT target_table.column_x = value。这样做可能会返回意外和错误的结果。 但这正是我要做的MERGE工作。 我拥有的数据是一个标准的项目对类别的多对多联接表(例如,哪些项目包括在哪些类别中),如下所示: CategoryId ItemId ========== ====== 1 1 1 2 1 3 2 1 2 3 3 5 3 6 4 5 我需要做的是用新的项目列表有效地替换特定类别中的所有行。我最初的尝试是这样的: MERGE INTO CategoryItem AS TARGET USING ( SELECT ItemId FROM SomeExternalDataSource WHERE CategoryId = 2 ) AS SOURCE ON SOURCE.ItemId = …

6
如果我们在sql-server中启用读取已提交的快照,会有什么风险?
我在这里已经读到,每行将存储一些额外的数据,因此我们可能会看到性能下降,但是还有哪些其他风险? 例如。这会影响数据库的恢复吗?我们还需要采取其他措施来利用这一优势吗? 我计划执行以下命令: ALTER DATABASE DatabaseName SET READ_COMMITTED_SNAPSHOT ON ALTER DATABASE DatabaseName SET ALLOW_SNAPSHOT_ISOLATION ON 我相信这将使我们更接近oracle,如果一个事务正在更新,其他事务仍可以读取旧数据。这个对吗? 我正在研究此问题,因为我厌倦了SQL Server 2005中的锁定问题。我希望这可以减少用户偶尔看到的死锁,有助于提高应用程序的整体性能,并鼓励我们的开发人员为每个事务执行多个操作而无需恐惧。

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.