这篇 Microsoft 文章 -如何确定 64 位版本的 Windows Server 2008 和/或 Windows 2008 R2 的适当页面文件大小提供了计算 64 位 Windows 2008 和 Windows 2008R2 的页面文件大小的指南。这无疑适用于通用服务器。我想知道在 Windows 2008/R2 64 位上运行的 SQL Server 2008R2 的指导是什么?
我假设我们希望内存中的数据尽可能少地访问页面文件,否则 SQL 可能会访问磁盘两次以获取数据。SQL Server 甚至允许内存中的数据访问页面文件吗?我已经通过SQL Server 2008 R2 联机丛书寻找指导,但还没有发现任何关于页面文件使用的提及。
这是一个潜在的使用场景:给定一个具有 64GB RAM 的物理服务器,整个 64GB RAM 是否需要一个页面文件?我们应该为 96GB 的页面文件做好准备吗?对于单个文件来说,这似乎有点过分。我知道传统观点是,Windows 将页面文件与内存结合起来,以尝试在 RAM 上更轻松地交换应用程序,但这是真的吗?小于 64GB 的页面文件会影响性能吗?
甚至 Microsoft也不鼓励使用 SQL Server 身份验证模式,但我们的应用程序需要它。
我读过最好的做法是不要让用户sa直接使用登录名,而是使用 Windows 身份验证并允许这些帐户(或帐户组)系统管理员权限。
我正在对大型SQL server 2008 数据库做一些性能调优,IT 组不愿意给SHOWPLAN 权限。过去,“显示执行计划”是了解单个查询和过程性能的最有效方法。
授予此权限有哪些固有风险?对数据库的开发副本进行这种限制是否有正当理由?
注意:该 SQL IT 组在单个 SQL Server 实例下拥有 200 多个数据库。谢谢。
答:我认为没有回应意味着除了下面提到的风险之外没有重大的安全风险。基本上,将其限制在开发数据库上会适得其反。
如果有人提出更好的答案,我会更新。感谢您的意见!
今天,在断电后,一个数据库(恢复:已满)在 SSMS 中显示“In Recovery”。所以:
myDatabase (In recovery) (数据库状态:recovery, Shutdown)
完成后,“恢复过程”数据库显示名称 myDatabase 没有“(恢复中)”。我以为问题解决了,但事实并非如此。
当我启动使用该数据库的应用程序时,额外的文本“(恢复中)”再次出现在我的数据库名称旁边。
我等到“恢复过程”完成,然后将数据库脱机并重新联机。
我重新启动了服务器,重新启动了计算机,当我的应用程序运行时,额外的文本再次出现。在 SQL Server 日志中,消息“正在启动数据库‘myDatabase’”出现了几次。似乎数据库正在工作,因为我可以插入数据,但状态显示它发生了一些事情。
服务器日志没有显示任何有趣的内容。唯一不正常的是我有30个条目“启动数据库'myDatabase'”。
我知道当服务器启动时,每个数据库在准备使用之前都会经过恢复。但就我而言,数据库联机然后显示“myDatabase(恢复中)”。如果我关闭应用程序,数据库将进入状态:正常。这真让我抓狂。
我什至安装了一个新的 SQL Server 实例,并将旧数据库“myDatabase”放在上面。问题仍然发生。
当我运行此查询时:
SELECT databasepropertyex('nyDatabase', 'STATUS')
Run Code Online (Sandbox Code Playgroud)
它显示正在恢复、在线、可疑和回到在线然后恢复等。
除非我将其关闭并重新启动,否则 SSMS 中的 IntelliSense 不会更新。我尝试在 SSMS 会话处于活动状态时断开与服务器的连接并重新连接,但这不起作用。
重建步骤:
如何在不重新启动 SSMS 的情况下强制 IntelliSense 更新?
第一张海报,长期潜伏在这里。在报告中激活应用程序角色的最佳方法是什么?
我尝试了不同的方法,到目前为止唯一有效的方法是像这样嵌入对应用程序角色的调用:-
EXEC sp_setapprole 'REPORTZ', 's3cr3t';
select *
from mytable
where ID < 10000
Run Code Online (Sandbox Code Playgroud)
在数据集中。它确实有效......但不是我喜欢的(当然不是我想要进入生产环境的形状)。
我更希望我可以在运行时通过自定义程序集或报告服务中的某种“服务器挂钩”以某种方式“劫持”或“注入”应用程序角色激活行(在这两种情况下,我都不知道如何)
非常感谢您的时间+亲切的关注。
是的。
我正在根据不是主键的列对表进行分区?我今天阅读了一些关于分区列是否必须是主键的一部分的相互矛盾的信息。我的直觉说不,但我不是 100% 确定。所以问题...
我有一个非常重要、非常缓慢的视图,其中在 where 子句中包含了一些非常丑陋的条件,例如这样。我也知道连接是粗略和慢速连接varchar(13)而不是整数标识字段,但想改进下面使用此视图的简单查询:
CREATE VIEW [dbo].[vwReallySlowView] AS
AS
SELECT
I.booking_no_v32 AS bkno,
I.trans_type_v41 AS trantype,
B.Assigned_to_v61 AS Assignbk,
B.order_date AS dateo, B.HourBooked AS HBooked,
B.MinBooked AS MBooked, B.SecBooked AS SBooked,
I.prep_on AS Pon, I.From_locn AS Flocn,
I.Trans_to_locn AS TTlocn,
(CASE I.prep_on WHEN 'Y' THEN I.PDate ELSE I.FirstDate END) AS PrDate, I.PTimeH AS PrTimeH, I.PTimeM AS PrTimeM,
(CASE WHEN I.RetnDate < I.FirstDate THEN I.FirstDate ELSE I.RetnDate END) AS RDatev, I.bit_field_v41 AS bitField, I.FirstDate AS FDatev, I.BookDate AS DBooked,
I.TimeBookedH …Run Code Online (Sandbox Code Playgroud) Owned Schemas和之间有区别Role Members吗?
根据我的理解,这Role Members是强制性的 - 用户需要至少Role Members选中一个复选框。
然而,这Owned Schemas不是强制性的。这真的让我想知道为什么需要Owned Schemas在那里。

我最近接手了一个项目,我发现在大多数表中,主键都有属性“ NOT FOR REPLICATION”。
我不是 DBA,但肯定在大多数数据库中,没有主键的记录将被视为已损坏。大多数这些记录的主键几乎肯定会在某处用作外键。
这是前开发人员(不再为公司工作)的错误,还是涉及其他一些逻辑?我们甚至不在生产环境中使用复制,所以这实际上并没有影响任何严重的事情,但我想知道删除所有这些我不知道的指令是否有任何其他副作用。
对于与该主题相关的许多搜索词,我没有找到很多有用的点击,所以我相当肯定这只是一个我需要扭转的愚蠢错误,所以这个问题真的是为了缓解我的偏执。
sql-server ×10
role ×2
intellisense ×1
memory ×1
metadata ×1
partitioning ×1
recovery ×1
schema ×1
security ×1
ssms ×1
ssrs ×1
view ×1
windows ×1