问题标签 [sql-server-2005]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
14 回答
37144 浏览

sql-server - Microsoft SQL 2005 中的自然(人类字母数字)排序

我们有一个大型数据库,在该数据库上进行 DB 端分页。这很快,在几分之一秒内从数百万条记录中返回一页 50 行。

用户可以定义自己的排序,基本上是选择要排序的列。列是动态的——一些具有数值、一些日期和一些文本。

虽然大多数按预期排序,但文本以一种愚蠢的方式排序。好吧,我说愚蠢,这对计算机有意义,但会让用户感到沮丧。

例如,按字符串记录 id 排序会给出如下结果:

...等等。

我希望这考虑到这个数字,所以:

我无法控制输入(否则我只会在前导 000 中格式化)并且我不能依赖单一格式 - 有些是“{alpha code}-{dept code}-{rec id}”之类的东西。

我知道在 C# 中有几种方法可以做到这一点,但不能拉下所有记录来对它们进行排序,因为那样会很慢。

有谁知道在 Sql server 中快速应用自然排序的方法?


我们正在使用:

然后我们按那个分页。

我们可以添加触发器,尽管我们不会。他们所有的输入都是参数化的等等,但我不能改变格式——如果他们输入“rec2”和“rec10”,他们希望它们会像那样以自然顺序返回。


我们有有效的用户输入,针对不同的客户遵循不同的格式。

一个人可能会去 rec1, rec2, rec3, ... rec100, rec101

而另一个可能会去:grp1rec1,grp1rec2,... grp20rec300,grp20rec301

当我说我们无法控制输入时,我的意思是我们不能强迫用户更改这些标准 - 它们具有像 grp1rec1 这样的值,我不能将其重新格式化为 grp01rec001,因为这会改变用于查找和链接到外部系统。

这些格式变化很大,但通常是字母和数字的混合。

在 C# 中对这些进行排序很容易 - 只需将其分解为{ "grp", 20, "rec", 301 }然后依次比较序列值。

但是可能有数百万条记录并且数据是分页的,我需要在 SQL 服务器上进行排序。

SQL 服务器按值排序,而不是比较 - 在​​ C# 中,我可以将值拆分出来进行比较,但在 SQL 中,我需要一些逻辑来(非常快速地)获得一致排序的单个值。

@moebius - 您的答案可能有效,但为所有这些文本值添加排序键确实是一种丑陋的妥协。

0 投票
7 回答
105712 浏览

sql-server - SQL Server,将命名实例转换为默认实例?

我需要将 SQL Server 2005 的命名实例转换为默认实例。

有没有办法在不重新安装的情况下做到这一点?


问题是,6 个开发人员中有 2 个安装了命名实例。因此,对于我们其他四个人来说,改变连接字符串变得很痛苦。我正在寻找阻力最小的途径,以使这 2 个重新回到我们团队的标准设置中。

每个人都表示这会很麻烦,而且会占用他们的开发时间。我认为这需要一些时间来解决,为了所有相关人员的最大利益,我尝试梳理已安装的配置应用程序但没有看到任何东西,所以我认为会有更多了解内部工作原理的人在这里。

0 投票
14 回答
176406 浏览

sql-server - varchar 和 nvarchar SQL Server 数据类型之间的主要性能差异是什么?

我正在使用SQL Server 2005. 我在vs
问题上看到了一些思想流派:varcharnvarchar

  1. varchar除非您处理大量国际化数据,否则请使用nvarchar.
  2. 只是nvarchar用于一切。

我开始看到观点 2 的优点。我知道 nvarchar 确实占用了两倍的空间,但这并不一定是一个大问题,因为它只会为几百名学生存储数据。对我来说,似乎最容易不用担心它,只允许一切使用 nvarchar。还是我缺少什么?

0 投票
4 回答
439 浏览

sql-server-2005 - 模拟大视图查询以进行基准测试

我们的 Windows 窗体应用程序通过 ADO.NET 和 SOAP Web 服务从 SQL Server 的视图中提取记录,并在数据网格中显示它们。我们有几个大约 25,000 行的案例,工作相对顺利,但潜在客户需要在一个列表中包含很多倍。

为了弄清楚我们现在的扩展程度,以及我们可以实际改进的程度(和程度),我想实现一个模拟:让 SQL Server 发送虚构的随机数据,而不是显示实际数据。客户端和传输端基本相同;视图(或至少是基础表)当然会以不同的方式工作。用户指定虚构行的数量(例如 100,000)。

目前,我只想知道客户端需要多长时间来检索和处理数据并准备好显示它。

我想弄清楚的是:如何让 SQL Server 发送此类数据?

我是否:

  1. 创建一个必须预先运行以填充实际表的存储过程?
  2. 创建一个我指向的函数,从而让服务器“实时”生成数据?
  3. 以某种方式复制和/或随机化现有数据?

第一个选项对我来说听起来会产生最接近现实世界的结果。因为数据实际上是“物理存在的”,所以SELECT查询在性能方面与对真实数据的查询非常相似。但是,它会通过其他无意义的操作对服务器征税。假数据也会被备份,因为它会存在于同一个数据库中——当然,除非我在每次运行基准测试后删除数据。

第二个和第三个选项运行实际模拟时对服务器征税,因此可能会产生不切实际的缓慢结果。


此外,我不确定如何创建这些行,而不是使用循环或游标。SELECT top <n> random1(), random2(), […] FROM foo如果foo实际上碰巧有条目,我可以使用<n>,但否则我(显然)只会获得foo碰巧有的行数。AGROUP BY newid()或类似的东西似乎不起作用。

0 投票
3 回答
7549 浏览

sql-server - 聚集索引列上的非聚集索引提高了性能?

在 SQL Server 2005 中,查询分析器多次告诉我要在已经具有聚集索引的表的主 ID 列上创建非聚集索引。遵循此建议后,查询执行计划报告查询应该更快。

为什么同一列(具有相同排序顺序)上的非聚集索引比聚集索引更快?

0 投票
4 回答
3582 浏览

sql-server - 将只读数据库表加载到内存中

在我的一个应用程序中,我有一个用于参考数据的 1gb 数据库表。它有大量的读取来自该表,但从来没有写入。我想知道是否有任何方法可以将数据加载到 RAM 中,从而不必从磁盘访问它?

我正在使用 SQL Server 2005

0 投票
2 回答
109 浏览

sql-server - 向后转换 SQL 数据库

有谁知道任何可以帮助将SQL2005数据库转换回SQL2000格式的免费工具?我知道您可以编写所有对象的脚本,然后转储数据,但这需要手动完成很多工作。

0 投票
4 回答
7915 浏览

sql - SQL Server 2005 Professional Edition 上的 SQL Profiler

我想使用 SQL Profiler 来跟踪对我的数据库执行的查询、跟踪性能等。但是似乎 SQL Profiler 仅在 SQL Server 2005 的企业版中可用。确实是这种情况,我可以做些什么关于它?

0 投票
4 回答
4786 浏览

sql-server - SQL Server 2005 临时表

在存储过程中,SQL Server 2005 中的#Temptable 何时创建?创建查询执行计划或执行存储过程时?

0 投票
2 回答
5989 浏览

sql-server - SQL Server、nvarchar(MAX) 或 ntext、image 或 varbinary?

我什么时候应该选择其中之一?空间和(全文)索引的含义是什么?

顺便说一句:我目前正在使用 SQL Server 2005 计划在接下来的几个月内升级到 2008。

谢谢