SQL Server 2014 速成版已发布,内存限制为 1 GB。
SQL 实例内存属性对此限制有何作用?例如,我可以将属性中的最小和最大内存限制设置为 4GB,并且根据任务管理器,该实例将“使用”4GB 的系统内存。
我最好将内存属性限制为 1 GB 还是在此处分配 > 1 GB 内存有优势。
跳到摘要版本的最后一段
我正在处理 SQL Server 2008 R2 Express 安装。我有一个相当复杂的存储过程。根据输入,它可能返回 6500 条记录。
每条记录都是一个网络订单。它返回 80 个字段。此外,还有一些分组来总结 SPROC 本身的行项目信息和复杂的过滤。这个查询几乎总是在 2 秒内运行。
有时,当查询以最少量的过滤运行时,会导致所有 6500 行都返回,数据库服务器会进入某种错误状态。
CPU 峰值达到 100% 并保持在那里。有时它会在几分钟后退出此状态,有时它会一直保持到我重置 SQL 服务。
如果我在此错误情况下重置 SQL 服务,然后再次运行查询,通常我将能够运行一百次而不会重复出现错误情况。然而,随着数据库老化(和扩展),这种错误情况变得越来越普遍。
这是我所知道的
我已经分析了执行计划,并且可能在相应表中的相应字段上有索引
这些索引每晚重建
平均而言,错误状态持续的时间比以前长。
当此错误条件刚刚发生时(在重置 SQL 服务之前),重建索引似乎会有所帮助。我在这里包括这个是因为它可能与内部统计数据有关?通常情况下,我现在只需要重置 sql 服务。
据我所知,执行计划看起来相对健康。您可以在此处查看计划中最繁忙的季度:http : //i.imgur.com/bwAFn.png 注意:由于 3 个带下划线的项目,我显示了这一部分。
在更强大的硬件上,我没有遇到过这种错误情况。由于各种原因,我需要保留生产版本的有限硬件。
数据库属性:

我的托管资源相当少。
话虽如此,数据库服务器几乎一直都是“快乐”的,除非这个错误条件是由这个特定的 SPROC 触发的。
我真的不能在这里显示我的代码,尽管我很想。
我想知道是否正在触发某种内部维护?SQL Server 是否有可能进入无限循环?(我在我的代码中没有使用循环)。
有没有一套好的调试处理这种情况提示:?
有时,当查询运行时,它会触发 SQL Server 使用 100% CPU 90 …
我正在使用MS SQL Express 2008和Visual Studio 2010。
如果您附加到本地MDF文件,如何在不删除文件的情况下将其从“数据库”列表中删除?原因是清除旧项目的数据库列表。下次运行该项目时,它会重新建立连接,以便在需要时使事情变得整洁且易于查找。
尝试简单地删除数据库当然也会删除文件。我尝试取消选中Delete backup and restore history information for databases但这并没有什么区别。我也尝试过 ole'Shift-Delete来改变它的功能。
奇怪的是,当我搜索时,我没有看到类似的问题。我认为这将是其他人想做的事情。
现在我复制MDF和LDF文件,从Management Studio 中删除数据库,然后将文件复制回来。
有没有更好的办法?
我相信在生产服务器上安装了 SQL Server 2008 R2 Express。当我使用 SQL Server Management Studio 连接到它时,它显示为SQL Server 10.50.1600.
如果实际上是 SQL Server 2008 R2 Express,我的理解是数据库大小限制为 10 GB。但是,有些东西只是困扰着我,因为我的大小接近 1 GB,并且属性屏幕上有一条消息让我感到害怕。数据库在生产环境中运行。里面有很多行,我删除了很多,但它并没有改变消息。当我转到数据库的属性时,它显示“大小 1005.75 MB”,其正下方显示“可用空间 0.03 MB”。
我尝试使用“收缩”,但它只是闪烁并消失了。我的生产服务器会因为数据库太大而崩溃吗?当我认为服务器应该允许 10 GB 时,为什么会在 1 GB 时发生这种情况?我怎样才能减少它?删除非活动客户端的记录没有任何作用。
我了解 SQL Express 无法将 Service Broker 消息发送到链中没有标准(或更好)实例的其他实例。但是是否可以使用 Service Broker在单个 Express 实例中发送和接收消息?换句话说,队列和服务都归发起 SQL 实例所有(并且永远不会离开)。
sql-server-2008 sql-server service-broker sql-server-express
我们的一个客户在一个不再运行的系统上有一个 SQL Server 2000 数据库。他们不知道数据库中有什么。他们给了我 .mdf 和 .ldf 文件,并希望我们调查和提取信息(如果有)。
我认为备份这些文件时没有正确分离数据库,因为当我尝试将这些文件附加到我的 SQL Server 2008 快速版时出现以下错误:
由于数据移动,无法使用 NOLOCK 继续扫描。正在将数据库“GRMStemp”从版本 539 转换为当前版本 655。数据库“GRMStemp”运行从版本 539 到版本 551 的升级步骤。(Microsoft SQL Server,错误:601)
在这种情况下我该怎么做才能附加数据库?
我刚刚开始学习优化我的查询并分析他们的查询计划。我认为这个查询会生成非聚集索引查找 + 键查找。
SELECT ct.*
FROM Person.ContactType AS ct
WHERE ct.Name LIKE 'Own%';
Run Code Online (Sandbox Code Playgroud)
相反,它使用聚集索引扫描。我不知道为什么。
我正在 SQL Server 2012 Express 上使用 AdventureWorks2012 数据库。ContactTypeId 列上有聚集索引,Name 列上有非聚集索引。第三列 (ModifiedDate) 不属于任何索引。该表仅包含 20 行。
我怀疑查询优化器决定进行聚集索引扫描,因为表只有 20 行,也许扫描索引然后进行键查找更快。
sql-server execution-plan sql-server-2012 sql-server-express
我的项目是在不延长事务的情况下审计我们系统中的 5 到 10 个现有表。无论使用什么方法,它都必须适用于 SQL Server Express 2005 到(最终)2016。
我已经完成了关于变更数据捕获 (CDC) 和变更跟踪的研究。更改跟踪不捕获特定更改,CDC 仅在企业版中可用。
然后我偶然发现了 Service Broker。我对 Service Broker 很感兴趣,所以我开始创建一个原型。Service Broker 工作正常,但在我的其他两个帖子中收到的答案让我相信这可能不是正确的方法。太复杂了,没什么。我仍处于分析阶段并尝试不同的事情作为我分析的一部分。
现在服务代理的结果并不令人信服……将 105000 个项目批量更新到价格表需要 38 秒,而队列(审计部分)的处理需要 17 秒……但 38 秒包括插入到 2#temp 表中的双重处理,然后用于插入到 TMPins 和 TMPdel。所以我想我可以把它减半......我现在质疑服务代理的使用......从逻辑上讲,触发器可能只需要将信息直接插入审计表中就需要相同的时间...... .
澄清一下,当我说批量插入时,它不是“批量插入”功能。我说的是一次性插入或更新的大量数据。在更新价格表中的 105000 件商品时,我想审核发生的更改。当我说发生的变化时,我决定在审计表中插入新值(如果它是插入或更新)或插入所有其他字段为空的主键(对于已删除的记录)......所以是的!它可以在数据加载后但我不想丢失任何审计(我不希望交易无序传递)
另外两篇文章将有助于了解我正在尝试做的事情和我尝试过的事情的背景:
我重视每一个想法。
我正在查看计算机管理->用户,发现 SQL Server Express 为我创建了很多用户。
为什么?我的系统被感染了吗?
描述都说,“在 SQL Server 实例 SQLEXPRESS 中执行 R 脚本的本地用户帐户”。
我将如何在 SQL Express 上运行 Ola Halengren 的 sql 维护计划的各个方面?
我的理解是每个作业都应该按特定顺序运行。我确信 .bat 或 cmd 文件可以做到这一点,但不确定从哪里/如何开始。SQL Express 不显示服务器代理,因此不显示作业。
我可以以另一种方式查看它们并仍然使用调度程序,还是必须编写脚本?我是否必须从任务计划程序运行它,或者 SQL 代理计划程序可以处理这个问题?非常感谢您可以提供的任何帮助/方向。
附带说明一下,我还想知道是否可以安排作业在另一个作业完成后运行,而不是指定运行作业的时间?
sql-server scripting sql-server-express maintenance-plans ola-hallengren