这篇 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 的页面文件会影响性能吗?
Owned Schemas和之间有区别Role Members吗?
根据我的理解,这Role Members是强制性的 - 用户需要至少Role Members选中一个复选框。
然而,这Owned Schemas不是强制性的。这真的让我想知道为什么需要Owned Schemas在那里。

我有一个用户收到一个 ORA-28002,表明密码将在六天内过期。我运行了以下内容:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Run Code Online (Sandbox Code Playgroud)
但是当我尝试以用户身份登录时,该消息仍然存在。执行这个:
select * from dba_profiles where RESOURCE_NAME LIKE 'PASSWORD_LIFE_TIME';
Run Code Online (Sandbox Code Playgroud)
显示这些值确实更改为 UNLIMITED。
在使用生产数据的副本测试一些迁移脚本(脚本与开发数据一起运行良好)时,我发现了一个奇怪的情况。CONSTRAINT 已更改,因此我发出 DROP + ADD 命令:
ALTER TABLE A_DUP_CALLE
DROP CONSTRAINT A_DUP_CALLE_UK1;
ALTER TABLE A_DUP_CALLE
ADD CONSTRAINT A_DUP_CALLE_UK1 UNIQUE (
CONTROL_ID,
CALLE_AYTO_DUPL
)
ENABLE;
Run Code Online (Sandbox Code Playgroud)
DROP 命令运行良好,但 ADD 命令失败。现在,我陷入了一个恶性循环。我无法删除约束,因为它不存在(初始删除按预期工作):
ORA-02443: 无法删除约束 - 不存在的约束
我无法创建它,因为名称已经存在:
ORA-00955: 名称已被现有对象使用
我A_DUP_CALLE_UK1在 SQL Developer 的搜索框中输入内容,然后……就在那里!所有者、表名、表景观……一切都匹配:它不是同名的不同对象,它是我的原始约束。该表出现在约束详细信息中,但该约束未出现在表的详细信息中。
我的问题:
(服务器是 10g XE,我没有足够的声望来创建标签。)
这是我要找的:
如果您使用过该工具,我会对您发现的利弊感兴趣。我可以列出一个列表,但实际使用该工具的洞察力更有价值。
我很想知道其他数据库有哪些类似于Oracle 闪回查询的特性。似乎任何支持MVCC 的数据库都可以具有该功能,但是哪个呢?SO对于 SQL Server有这个问题,但在这里似乎更合适。
有没有人推荐一本教数据库分片的书(最好是从头开始)
我已经阅读了 40 个不同的网站,讨论了分片。
我并不是说在线网站/博客很糟糕,它们是很好的花絮。然而,我需要主餐,而不仅仅是这里和那里的有用信息。基本上,我有一个关于如何实现分片的想法(我猜),但由于它是一个非常复杂的概念,我相信有很多很多东西可以研究。
当我使用带有空格的 Varchar 时,它会忽略末尾的空格。
前任:
declare @X varchar(50)
Run Code Online (Sandbox Code Playgroud)
这个...
set @X= 'John'
Run Code Online (Sandbox Code Playgroud)
...是相同的...
set @X= 'John '
Run Code Online (Sandbox Code Playgroud)
它认为这些是相等的。我怎样才能让系统将这些识别为不同的?
有时我会得到一个可以在 SQL Developer 或 Toad 中正常运行的脚本,但需要修改才能从 SQL*Plus 中成功运行。这是一个最坏的例子,其中包含多个语句,每个语句都带有空行、分号和正斜杠:
INSERT INTO t1 VALUES ('a
;
/
');
INSERT INTO t1 VALUES ('b
;
/
');
DELETE FROM t1 WHERE c1 = 'c
;
/
';
Run Code Online (Sandbox Code Playgroud)
由于各种原因,这些语句需要从 SQL*Plus 运行。空行很容易用一个简单的...
set sqlblanklines on
Run Code Online (Sandbox Code Playgroud)
我知道 sqlterminator可以更改和/或关闭,但两者都需要修改代码,前者移动问题而不解决它,也不能解决嵌入的斜杠问题。
最好的答案是通过以某种方式改变环境(如 sqlblanklines 所做的),允许这些语句在不修改的情况下运行。如果这是不可能的,那么也许有一种方法可以以编程方式修改脚本。我试图避免手动更改。