5

这是场景:

我们有一个包含三个数据库的公司网站。它运行 SQL Server 2005。这三个数据库链接到 MDF 文件。有人试图直接复制/粘贴其中一个 MDF 文件,该文件对文件进行了某种锁定,导致只读错误。我们通过分离/重新连接来解决这个问题。

为了防止再次发生这种情况,我们正在寻找这些数据库的副本以降级到我们的 QA 数据库。

我们可以在不关闭公司网站的情况下制作副本的最佳方式是什么?我试图搜索谷歌并没有想出一个像样的方法。数据库相当小,我能想到的最坏情况就是关闭 SQL Server 服务,然后复制 MDF,然后重新启动服务。我假设最多停机时间为 10 秒。

[请注意阅读本文的任何人,不要直接复制 MDF 文件,请确保您至少将 DB 脱机,否则 DB 可以被锁定]

4

2 回答 2

2

@dave,我怀疑你是对的,DataBase > Tasks > Backup 将在不中断用户访问数据库的情况下工作。我在批处理文件中运行以下命令来备份我的数据库,并且它在运行时不会阻止访问。请注意,我不是 SQL Server 专家。这正是对我有用的。

sqlcmd -S "MyHostName\sqlexpress" -Q "BACKUP DATABASE MyDatabaseName TO DISK = N'C:\path\to\backup.bak' WITH NOFORMAT, NOINIT, NAME = N'MyDatabaseName-Full Database Backup', SKIP, NOREWIND,未加载,统计 = 10"

于 2012-04-24T14:14:22.767 回答
2

与其尝试复制和锁定 MDF 文件,不如将数据库备份到文件系统,然后将其复制。

您询问用户在备份期间是否会受到影响...

我们不能说不会对用户产生“任何”影响,因为我们当然是在处理数据库。但是,备份实时数据库是常态。通常,您会在夜间或使用率较低的时段安排备份,以便将中断降至最低。

查看这个问题,其中提供了一些很好的信息: https ://serverfault.com/questions/100490/what-happens-during-a-live-sql-server-backup

于 2012-04-24T14:14:28.960 回答