1

我想使用以下代码在 SQL Server 2012 中备份数据库:

BACKUP DATABASE aveed_co
TO DISK = 'C:\bakup.bak'
WITH FORMAT,
MEDIANAME = 'aveed_co',
NAME = 'aveed_co'

在 SQL Server Management Studio 中执行此代码后,我收到此错误:

Msg 233, Level 20, State 0, Line 0
向服务器发送请求时发生传输级错误。
(提供者:共享内存提供者,error: 0- 管道的另一端没有进程。)

要解决此问题,我必须更改登录类型(在 SQL Server 配置中),如下所示:

在此处输入图像描述

另一方面,我必须将“登录身份”从“内置帐户”(1)更改为“此帐户”(2)。

当我将“登录身份”更改为“此帐户”并输入用户名和密码时,SQL Server 代码将正确执行。

请注意,我有权在 c: 或任何驱动程序上写入

请帮助我使用 C# 或 SQL Server 代码执行此操作。

4

1 回答 1

2

您没有自定义用户对驱动器 C: 的写入权限。编辑:

        var query = @"BACKUP DATABASE [aveed_co] 
                        TO  DISK = 'C:\bakup.bak' WITH  INIT 
                        ,NOUNLOAD
                        ,NAME = N'aveed_co'
                        ,NOSKIP
                        ,STATS = 10
                        ,NOFORMAT 
                        ,COMPRESSION";
        using (var connection = new SqlConnection(@"Server=myServerAddress;Database=aveed_co;User Id=myUsername;Password=myPassword;"))
        {
            connection.Open();
            using (var command = new SqlCommand(query, connection))
            {
                command.CommandTimeout = 0;
                command.ExecuteNonQuery();
            }
        }

SQL Server 必须能够读取和写入设备;运行 SQL Server 服务的帐户必须具有写入权限。

于 2013-07-27T19:10:08.250 回答