SQL Server 备份,附加到 BAK 文件?

5 sql-server-2008 backup restore

我有一个带有全文索引的 SQL Server 数据库。当我创建使用它的应用程序时,我对数据库进行了备份,并将.BAK文件与应用程序一起发送。作为应用程序安装的一部分,它会还原此.BAK文件。我喜欢这个选项,因为它为我自动创建所有表,使用一些表需要的默认行,并且还包括全文索引。好看又简单。

现在我需要添加一个备份/恢复功能,最终用户希望它更像一个 MS Office 应用程序而不是一个客户端/服务器应用程序。他认为它是一个文件,只想备份到一个文件,然后随时恢复……不是典型的 SQL Server 备份,也不是自动化的,只是简单的“复制”备份,没有附加/备份集/等等。

我正在考虑使用BACKUP DATABASETSQL 命令,他不介意它只保存到服务器上的文件夹中。然后用restore databaseTSQL 命令恢复——我目前用于初始安装的命令。

我遇到了一个问题,这是我的问题。我有一个版本号,我在表中连续保存一个版本号,我用它来避免旧应用程序连接到新数据库,反之亦然。我想在允许恢复之前检查这个版本。我知道它是否是.MDF我可以附加到它并在恢复之前检查的文件,但是我可以使用备份 ( .BAK) 文件来执行此操作吗?

我是否错过了更适合我的设计的更好的备份/恢复方法?例如,我是否应该分离.MDF文件并复制它和日志文件作为备份,然后将其附加为“恢复”过程?这会像备份/恢复那样保留所有内容,包括全文索引吗?

我使用的是 SQL Server 2008 Express,我的应用程序是 C# .NET 3.5。

编辑:当其他用户在数据库中时不需要进行备份,如果需要独占访问就可以了,它只是一个有几个人的小办公室,如果需要可以轻松关闭。

Dav*_*kle 0

如果不恢复备份,您无法从备份中获得太多信息。您将获得的最好信息是来自RESTORE HEADERONLY的信息,这很好,但不能真正为您提供所需的特定于应用程序的数据。您也许可以在代码中按日期而不是版本号,或者按照 user92546 的建议,将版本号合并到文件名中。如果您真的对有人操纵您的文件名感到偏执,您可以创建版本号和秘密的简短哈希,并将其用作您的文件名。

老实说,在我看来,如果应用程序确实将数据库视为文件,那么您可以很好地使用附加/分离方法并将其保存在某个地方。