小编Dan*_*Dan的帖子

为什么 SQL Server 2012 Express 在我的服务器上使用 9.5GB 的 RAM?

我正在构建一个应用程序,我计划在其中嵌入 SQL Server 2012 Express 作为主数据存储。在我的开发机器(具有 3GB RAM 的 Win7-32​​)上进行测试时,我从未观察sqlservr.exe到使用超过 1GB RAM的过程,正如我对已发布的 SQL Server Express 版硬件扩展限制所期望的那样。

然后我将我的应用程序移到一台服务器级机器(Win Server 2008R2 64 位,16GB RAM)来评估它的性能,并惊讶地发现该sqlservr.exe过程迅速扩展到大约 9.5GB 的 RAM 并停留在那里。

我重新启动了几次,看看是否会有任何影响,但每次,该过程都迅速恢复到 ~9.5GB。现在我当然很高兴让 SQL Server Express 使用我的 RAM,但我想知道这是否是预期的行为,以便我不会依赖基于不正确的 RAM 使用的性能级别。

仅供参考,根据SELECT @@VERSION,我的服务器机器上的 SQL Server 版本是:

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 
    Oct 19 2012 13:38:57 
    Copyright (c) Microsoft Corporation
    Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
Run Code Online (Sandbox Code Playgroud)

我的 9.5GB 号码来自任务管理器中的“私人工作集”号码。来自 …

sql-server memory sql-server-2012 sql-server-express

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

如何检查空或空的表值参数?

我有一个存储过程 (SS2k8),其中包含一些有时为 null 或为空的表值参数。我已经看到这个StackOverflow 帖子说空/空 TVP 应该简单地从调用参数列表中省略。我的问题是我无法弄清楚如何在存储过程中检查空或空值,因为“IF (@tvp IS NULL)”在过程创建时失败,并显示消息“必须声明标量变量“@tvp””。我是否必须在 TVP 上执行 SELECT COUNT(*) 并检查零?

代码摘录:

CREATE PROCEDURE [foo] (@tvp [TvpType] READONLY) AS

IF (@tvp IS NOT NULL) -- doesn't work
BEGIN
  -- lots of expensive processing
END
ELSE
BEGIN
  -- a little bit of cheap processing
END
...
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 null sql-server t-sql table-valued-parameters

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