无法在事务中执行备份或还原操作.BACKUP DATABASE异常终止

发布时间 2023-11-02 10:01:41作者: 不及格的程序员-八神

 

BACKUP 操作未能完成命令 BACKUP DATABASE dycw2。有关详细消息,请查看备份应用程序日志。


 

解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法

当我们在SQL SERVER中备份数据库时,有时会遇到错误提示“操作系统错误5:拒绝访问”。这种情况下,我们无法对数据库进行备份。造成这种错误的原因可能是我们没有足够的权限或者备份路径不正确。

下面是解决“操作系统错误5:拒绝访问”错误的完整攻略:

一、检查数据库备份路径及权限

1.检查备份路径

首先要确认备份文件夹所在路径是否正确,同时可在电脑上新建一个文件夹,然后将备份文件夹重定向到该位置。此时可以通过单用户模式重新启动SQL SERVER,然后再进行备份操作。

2.检查备份文件夹权限

如果备份路径正确无误,可能是备份文件夹权限不够,此时需要检查备份文件夹的权限是否满足要求。SQL SERVER服务执行备份操作时需要具有读写权限,因此需要确保备份文件夹对SQL SERVER服务有足够的权限。

二、使用特殊的T-SQL语句备份数据库

除了通过修改备份路径和检查备份文件夹权限外,我们还可以使用特殊的T-SQL语句来备份数据库。

BACKUP DATABASE [数据库名] TO DISK = '备份文件路径' 
WITH FORMAT, MEDIANAME = '媒体库名称', MEDIADESCRIPTION = '描述信息',
NAME = '备份名称', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10

其中,TO DISK表示备份到硬盘上,MEDIANAME表示备份媒体库的名称,MEDIADESCRIPTION是关于备份的详细描述信息,NAME是备份名称,STATS表示备份状态。在备份时,可以为BACKUP数据加上WITH选项,来选用不同的备份选项,如上所述。

例如,我们可以用以下语句来备份我们的数据库test:

BACKUP DATABASE [test] TO DISK = 'C:\test.bak' 
WITH FORMAT, MEDIANAME = 'test', MEDIADESCRIPTION = 'test描述',
NAME = 'test备份', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10

以上两种方法都可以解决备份时出现“操作系统错误5:拒绝访问”的问题。但如果问题依然没有解决,建议您查看Windows事件日志,查找更准确的错误信息,以便找出更好的解决方法。


 

 2010-06-28  872 views 
 
4

BACKUP failed to complete the command BACKUP DATABASE ... WITH DIFFERENTIAL. Check the backup application log for detailed messages.BACKUP未能完成命令BACKUP DATABASE

我在SQL Server日志文件查看器中看到此消息。备份应用程序日志在哪里?

回答

1

最后,我发现了这个问题。它是由Windows Server 2008上的Windows备份引起的,该备份还在进行完整备份(幕后)。这导致SQL Server差异备份无法找到最后一次完整备份。

我们通过迁移到Windows Server 2008解决了问题R2。


 

无法在事务中执行备份或还原操作.BACKUP DATABASE异常终止

 

嗨,伙计们,我正在尝试执行backUprestore命令在我的应用程序中建模EF6

对于我的备份我创建一个Sp,你可以在这里看到:

CREATE PROCEDURE GetBackUp
    -- Add the parameters for the stored procedure here
    @address nvarchar(max)
AS
BEGIN
    BACKUP DATABASE [db-invoice-169] to DISK=@address
END
GO
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我称之为 Sp

 private void Backup_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            string str_filename = string.Empty;
            sfd.FileName = "backup_database_" + DateTime.Now.ToShortDateString().Replace("/", "_");
            sfd.Filter = @"backup files(*.bak)|*.bak|all files(*.*)|*.*";
            sfd.FilterIndex = 1;
            sfd.OverwritePrompt = true;
            sfd.Title = "***save backup files***";
            if (sfd.ShowDialog() == DialogResult.OK)
            {
                str_filename = sfd.FileName;
                backup(str_filename);
            }
        }
        private void backup(string str_filename)
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                db.Database.ExecuteSqlCommand(@"EXEC [dbo].[back_up] @address = N'"+str_filename+"'");
                this.Cursor = Cursors.Default;
                MessageBox.Show("?????? ??????? ???? ?????? ???? ???");
            }
            catch (Exception ex)
            {
                MessageBox.Show("?????? ??????? ???? ?????? ???? ???? |" + ex.Message);
            }

        }
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

Cannot perform a backup or restore operation within a transaction.  BACKUP DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

 

abr*_*rar  20

 

尝试更改此行:

db.Database.ExecuteSqlCommand(@"EXEC [dbo].[back_up] @address = N'"+str_filename+"'");
Run Code Online (Sandbox Code Playgroud)

至:

db.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, @"EXEC [dbo].[back_up] @address = N'"+str_filename+"'");
Run Code Online (Sandbox Code Playgroud)

阿布拉