假设数据文件位于 D: 且日志文件位于 E:
假设 E 驱动器崩溃并且日志文件 (.ldf) 丢失。我将一个新的空磁盘附加到 E: 并启动 sql server。
启动时,SQL Server 将意识到 .mdf 文件存在,但日志文件不存在。由于丢失日志文件,SQL Server 将无法执行任何撤消/重做恢复步骤,并将数据库置于可疑位置。
注意:我尝试了此操作并注意到数据库进入可疑模式。这里的最佳实践是使用备份(完整+tlog)来恢复数据库。在我的情况下,我有上午 12 点的完整备份,但没有 tlog 备份。如果我从凌晨 12 点的备份中恢复,那么我会丢失一整天的数据(假设崩溃发生在中午)。我正在尝试思考如何利用现有的数据文件来处理这种情况。
我已经看到这 2 个扩展用于数据文件,.dat并且.dbf在创建和/或更改tablespace. 我不确定这两个扩展之间的区别是什么,或者是否.dat不正确。
以下是Oracle 数据库 SQL 参考 10g 第 2 版 (10.2)中的 2 个示例
.dat
CREATE TABLESPACE tbs_01
DATAFILE 'tbs_f2.dat' SIZE 40M
ONLINE;
Run Code Online (Sandbox Code Playgroud)
.dbf
CREATE TABLESPACE tbs_03
DATAFILE 'tbs_f03.dbf' SIZE 20M
LOGGING;
Run Code Online (Sandbox Code Playgroud) 我最近将临时数据库文件移到了一个单独的驱动器上(我有两个数据文件和一个日志文件)。
但是,重新启动服务器后,我的第二个数据文件从 gui 上的文件列表和 sp_helpfile 中都消失了。我设法多次重现此行为:我添加了一个新数据文件,看到它同时出现在 gui 和 sp_helpfile 中,并在重新启动服务器后消失。
我dbcc checkdb对数据库运行过,它没有返回任何错误。SQL 日志或 Windows 应用程序事件日志中都没有信息。
在做了更多研究之后,我运行了以下查询:
select d.name, m.* from sys.master_files m
inner join sys.databases d
on (m.database_id = d.database_id)
where d.name like 'tempdb'
order by 1, 2
Run Code Online (Sandbox Code Playgroud)
结果:http : //pastebin.com/Zu5fJ2hU
它显示了四个不同的辅助数据文件,其中没有一个出现在 sp_helpfile 中。如果我尝试使用 SQL Server 不允许使用的任何名称。这些文件都不存在于磁盘上。我的服务器是 SQL 2012 标准版。
在查看 SQL Server 中数据文件使用的空间时,SQL 报告的内容与 Windows 之间存在很大差异。
这怎么解释?

我从未在我的书中看到过这一点,dbpath也没有在搜索引擎中找到任何解释。
我们运行 MongoDB 3.2.8
# ls -alh; pwd
total 151M
drwxr-xr-x. 2 mongod mongod 4.0K Sep 12 22:18 .
drwxr-xr-x. 6 mongod mongod 12K Sep 12 22:16 ..
-rw-r--r--. 1 mongod mongod 8.0M Sep 12 21:54 extsort.0
-rw-r--r--. 1 mongod mongod 10M Sep 12 21:54 extsort.1
-rw-r--r--. 1 mongod mongod 7.9M Sep 12 22:02 extsort.10
-rw-r--r--. 1 mongod mongod 7.9M Sep 12 22:07 extsort.11
-rw-r--r--. 1 mongod mongod 9.9M Sep 12 22:07 extsort.12
-rw-r--r--. 1 mongod mongod 7.9M …Run Code Online (Sandbox Code Playgroud) 这个 SO 答案概述了 MySQL 如何将其数据库组织成文件,但没有描述文件本身的结构。
我想知道,在物理层面,关系数据库管理系统如何将它们的记录存储在文件中。文件的大致结构是什么,列/值在哪里(如果它只是一个 CSV),以及它是如何遍历的。
我正在寻找一种在创建时限制 DB2 数据库大小(在磁盘中)的方法。但我找不到。
在 SQL Server 上,我们可以这样做:
Create Database MyDatabase
on (Name='MyDatabase_Data',
Filename='c:\db\BdUnisanta_Data.mdf',
Size= 20MB,
FileGrowth = 10%,
Maxsize=100MB)
log on
(Name = 'MyDatabase_log',
Filename = 'c:\db\MyDatabase_Log.ldf',
Size = 5MB,
FileGrowth = 5%,
MAXSIZE = UNLIMITED
)
Run Code Online (Sandbox Code Playgroud)
DB2 中的等效形式是什么?是否可以?
简单的问题:我想将 Postgres 服务器的所有数据、模式、角色以及所有内容从 Windows 迁移到 Linux。
%PGDATA%我可以只复制Windows 中服务器指向 Linux 的目录内容,然后启动服务器,将 PGDATA 参数/变量指向该目录吗?换句话说,数据文件平台是否独立,使得从一个操作系统移植到另一个操作系统只需复制?
我还开发了一个用于克隆 PG 数据库、架构+数据的脚本,但由于多种原因,我更愿意将数据文件放在 USB 驱动器上并完成它。
我有 SQL Server 数据库,我们有很多表。为了提高性能,我为索引创建了不同的文件组,其中包含不同磁盘上的文件。我今天在不同的文件组中创建了新索引。但是,我仍然看到文件的最后修改日期为过去 1 个月。我检查了文件名,但我担心 SQL Server 没有设置文件的上次修改日期。新索引工作正常,但文件仍然没有向我显示最近的修改日期。
好的,我刚刚学到了一些新东西,SQL Server 的数据目录中的任何文件都没有显示上次修改日期到最近日期,而我的数据库也在不断更新。所有日期均为 1 个月大。服务器的系统时钟正确。
datafile ×10
sql-server ×4
oracle ×2
postgresql ×2
db2 ×1
db2-luw ×1
mongodb ×1
mongodb-3.2 ×1
oracle-10g ×1
replication ×1
storage ×1
tempdb ×1
windows ×1