标签: sql-server-2008

SQLEXPRESS 和 MSSQLSERVER 有什么区别?

我使用的是 SQL Server 2008 R2,当我查看 SQL Server 的服务时,我看到有两种不同的服务具有不同的实例。

  1. SQLEXPRESS
  2. MSSQLSERVER

谁能帮我弄清楚#1 和#2 之间的区别?

提前致谢

sql-server-2008 sql-server-2008-r2 visual-studio-2010

7
推荐指数
1
解决办法
1万
查看次数

加速 COUNT(*) - WHERE 子句减慢查询速度

以下查询需要 497 ms 才能运行,如果我删除 AND 部分之后只需要 320 ms。有没有办法加快这个速度?我在“messages”表上的唯一索引是“messages_id”上的PK。'hidden' 字段是一个位字段(非空),'message_type_id' 是一个 int 字段(非空),而 message_id 是一个 int 字段(PK)。

SELECT COUNT(*)
FROM messages
WHERE message_type_id = 1
AND (hidden = 0 OR message_id = @message_id)
Run Code Online (Sandbox Code Playgroud)

提前致谢!

sql-server-2008 sql-server t-sql count

7
推荐指数
2
解决办法
5629
查看次数

为什么主键上的聚集索引是强制性的?

为什么主键约束默认在 PK 列上创建聚集索引?

我们可以创建一个有主键但没有聚集索引的表吗?我需要 PK 约束来维护列上的唯一值 + 非空,但我不想要聚集索引,因为该表中有太多插入。

我读过聚集索引对插入有性能影响。

sql-server-2008 sql-server

7
推荐指数
1
解决办法
1793
查看次数

需要 SQL Server 索引/性能帮助(索引扫描和排序需要 40 分钟)

我终于找到了查询的逻辑,现在我需要加快速度......如果可能的话(它运行 40 分钟 +/-)。它位于两张桌子上,一张只有几百行 ( tblTradingDays),另一张有超过一百万行 ( tblDailySMA)。它返回 4800 万行。

我的基本逻辑是:我为交易品种、交易日期和周期值的每个组合返回一行,创建一个“慢v 快”周期对。所以在原始表中,有一个符号、一个交易日期、一个周期 (5,10,20,...) 和该组合的实际值。我想比较所有期间组合的值(期间 p1 = 期间 p2 除外)。我正在对要用于进一步处理的记录进行编号。希望这是有道理的。

我尝试了连接和谓词中涉及的字段的各种索引和组合。在估计的执行计划中,看起来排序是最昂贵的操作。tblDailySMA尽管我添加了其他索引,但该计划中出现的唯一索引是非聚集的、唯一的、 on:Symbol, TradeDate, Period和 includes Value。它被扫描。查询如下,希望有人可以帮助我。提前致谢..

SELECT 
   ROW_NUMBER() OVER 
   (
        ORDER BY t1.Symbol, t1.Period, t2.Period, t.TradingDate DESC
   ) RowNum,
   t1.Symbol, t.TradingDate, t1.Period, t2.Period, t1.Value FastValue, 
   t2.Value SlowValue, (t1.Value - t2.Value) SlowFastDiff,
   ChgSign = CASE WHEN t1.Value < t2.Value THEN 0 
                  WHEN t1.Value >= t2.Value THEN 1 
                  WHEN t1.Value IS NULL OR t2.Value IS NULL …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server sql-server-2008-r2

7
推荐指数
1
解决办法
576
查看次数

为什么分区级锁升级不是默认设置?

在 SQL Server 中,锁通常从行或页 -> 表升级。从 SQL Server 2008 开始,添加了一个新级别的锁升级 -分区级别

但是,这不会为分区表自动启用 - 默认情况下,该表设置为跳过分区锁定并从行或页 -> 表开始。为什么会这样?有什么原因我不想把我所有的表从 切换TABLEAUTO以便它们将锁升级到分区级别而不是表级别?

由于默认值仍然是TABLE,我认为AUTO.

sql-server-2008 sql-server partitioning lock-escalation

7
推荐指数
1
解决办法
2432
查看次数

过程缓存(计划缓存)大小

我正在开发一个包含许多复杂的 SQL 查询的应用程序。我想尽可能长时间地将查询计划保留在过程缓存中。为了防止从过程缓存中丢弃查询计划(由于内存压力),我想为过程缓存分配足够的内存。根据这个只有10%在4GB-64GB范围“看得见的目标”存储器被用于过程缓存; 我希望这个比率更高。

有没有办法控制过程缓存的大小?SQL Server 2008 或 2012;也许一些企业版功能?

此外,如果我明确设置了 min. SQL Server 的内存?

(我知道KEEP PLAN / KEEPFIXED PLAN提示;我也知道通过临时查询准备语句的优势,所以请不要推荐这些可能性。我特别想知道控制过程缓存尺寸。)

sql-server-2008 sql-server sql-server-2008-r2 sql-server-2012

7
推荐指数
1
解决办法
1万
查看次数

为什么 SELECT INTO 会导致算术溢出?

我在做这个

SELECT * INTO table1 FROM Table0
Run Code Online (Sandbox Code Playgroud)

我在 datetime 列上出现算术溢出(错误转换为 smalldatetime),但是创建的目标模式有一个 datetime 列而不是 smalldatetime 列。

sql-server-2008 sql-server

7
推荐指数
1
解决办法
644
查看次数

SQL Server 数据库备份文件是最终大小的两倍,直到备份完成

我刚刚为一个相当大的数据库(1.3 TB)编写了一个备份语句,我一直在使用一个更小的数据库(10 GB + 10 GB 日志文件)对其进行测试。备份写入三个目的地。在测试期间,我注意到当备份运行时,每个备份文件的大小约为 1.2 GB,但是一旦备份过程完成,文件就会缩小到 600 MB 以下。

我有兴趣了解:

  • 为什么文件在备份过程中变大然后缩小?
  • 是否有办法防止这种情况,
  • 当我备份 1.3 TB 的数据库时,文件可能有多大 - 如果文件再次是其最终大小的两倍,那么我可能需要请求更多的磁盘空间!

这是我正在使用的备份语句:

BACKUP DATABASE @DatabaseName
TO  DISK = @backupMedia1,
    DISK = @backupMedia2,
    DISK = @backupMedia3
WITH COMPRESSION, RETAINDAYS = 0, NOFORMAT, INIT, NOSKIP, NAME = @DatabaseName
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 backup

7
推荐指数
1
解决办法
3194
查看次数

使用查询检测 SQL Server 利用率

我当前的项目将不断向 sql 服务器发送查询,它可能会使用 100% 的内存或 CPU。

  • 如何在存储过程中检查服务器是否接近充分利用,以便我可以决定是否执行查询或将某些设置保存在表中,以便以下查询可以知道工作负载很高并决定要做什么

  • 如果没有,如何防止 SQL Server 达到充分利用?

有关案例的更多信息:现在我知道我们当前的测试服务器每秒可以处理 40-50 个查询(一个特定的存储过程)。现在我们将决定每秒向服务器发送多少查询。如果我们设置的数量比预期的还要高 1,从长远来看,查询最终会填满虚拟内存,客户端将不得不定期重新启动他们的 sql server 实例。

预期结果(赏金猎人):

@memory_usage float, @cpu_usage float; /* in percentage */
Run Code Online (Sandbox Code Playgroud)

欢迎任何想法。谢谢。

rdbms sql-server-2008 sql-server

7
推荐指数
3
解决办法
3万
查看次数

4KB NTFS 上 SQL Server 的 SAN 块大小

一位潜在客户想要评估我们的存储系统。他们在发送给我们的虚拟测试机上运行带有 4KB NTFS 的 Windows 2008R2 x64。他们似乎并不知道这一点,所以我认为假设环境没有被调整是合理的。测试是插入、索引、搜索、删除。我不知道工具。

鉴于 Windows NTFS 块大小为 4KB,SQL 写入 64KB 块 - 假设 SAN 上的块大小为 64k 是一个不错的选择是否安全?

它们运行 SQL Server 2008,也许是标准的。

sql-server-2008 sql-server san hardware

7
推荐指数
2
解决办法
2万
查看次数