Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SMO与C#Windows窗体应用程序备份SQL Server 2005数据库时,备份失败_C#_Sql Server 2005_Database Backups - Fatal编程技术网

使用SMO与C#Windows窗体应用程序备份SQL Server 2005数据库时,备份失败

使用SMO与C#Windows窗体应用程序备份SQL Server 2005数据库时,备份失败,c#,sql-server-2005,database-backups,C#,Sql Server 2005,Database Backups,这是我用来备份数据库的代码,正如你所看到的,代码是相同的。错误发生在我填写变量之后。我得到的错误是 服务器“RITZEL-PC\SQLEXPRESS”的备份失败 备份功能: public void BackupDatabase(String databaseName, String userName, String password, String serverName, String destinationPath) { Backup sqlBac

这是我用来备份数据库的代码,正如你所看到的,代码是相同的。错误发生在我填写变量之后。我得到的错误是

服务器“RITZEL-PC\SQLEXPRESS”的备份失败

备份功能:

    public void BackupDatabase(String databaseName, String userName, String password,        String serverName, String destinationPath)
    {
        Backup sqlBackup = new Backup();

        sqlBackup.Action = BackupActionType.Database;
        sqlBackup.BackupSetDescription = "ArchiveDataBase:" + DateTime.Now.ToShortDateString();
        sqlBackup.BackupSetName = "Archive";

        sqlBackup.Database = databaseName;

        BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath, DeviceType.File);
        ServerConnection connection = new ServerConnection(serverName, userName, password);
        Server sqlServer = new Server(connection);

        Database db = sqlServer.Databases[databaseName];

        sqlBackup.Initialize = true;
        sqlBackup.Checksum = true;
        sqlBackup.ContinueAfterError = true;

        sqlBackup.Devices.Add(deviceItem);
        sqlBackup.Incremental = false;

        sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
        sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;

        sqlBackup.FormatMedia = false;

        sqlBackup.SqlBackup(sqlServer);
    }
按钮点击

    private void BackUp_Btn_Click(object sender, EventArgs e)
    {
        String databaseName = @"D:\MY_THESIS\WORKING FILES\NNIT-RMS.mdf";
        String userName = "NNIT-Admin";
        String password = "password";
        String serverName = @"RITZEL-PC\SQLEXPRESS";
        String destinationPath = @"D:\";

        BackupDatabase(databaseName,userName,password,serverName,destinationPath);

    }
数据库信息
我还不允许发布图片,但我已经上传了一个屏幕截图。请参见此处:

不要再次分配字符串值,只需删除它们并按如下方式调用备份:

BackupSqlDatabase("YourDataBaseName","sa","password","ServerName","C:\\YourDataBaseName.bak");

不要再次分配字符串值,只需删除它们并按如下方式调用备份:

BackupSqlDatabase("YourDataBaseName","sa","password","ServerName","C:\\YourDataBaseName.bak");

为了备份数据库,SQL Server进程正在运行,需要对备份目标文件夹具有正确的文件夹权限

根据我的经验,除非SQL server进程以本地管理员身份运行,否则它将无权写入根目录

如果打开SSMS并尝试将数据库备份到目标路径,则可能会遇到相同的问题


尝试将备份文件夹更改为驱动器根目录或“我的文档”文件夹以外的其他文件夹。

为了备份数据库,SQL Server进程正在运行,需要对备份目标文件夹具有正确的文件夹权限

根据我的经验,除非SQL server进程以本地管理员身份运行,否则它将无权写入根目录

如果打开SSMS并尝试将数据库备份到目标路径,则可能会遇到相同的问题


尝试将备份文件夹更改为驱动器根目录或“我的文档”文件夹以外的其他文件夹。

数据库名应是连接到SQL Server Express时数据库的逻辑数据库名,例如
MYDATABASE
,而不是
.mdf
文件的整个文件名。我认为SMO不允许您备份单独的
.mdf
文件如果您查看我在上面发布的屏幕截图,我会放置一个我要备份的数据库的数据库信息的屏幕截图。这是sqlserver2005中数据库节点上显示的名称。我做错了吗?我是说:你不能用SMO备份一个“独立的”
.mdf
文件。您需要将
.mdf
文件附加到SQL Server Express,为其指定一个逻辑数据库名称,然后将该逻辑数据库名称用于SMO备份。整个“attach.mdf on the fly”功能有点混乱,坦率地说,不应该使用它,它将在SQLServer2012(“Denali”)中停止使用
databaseName
应该是数据库连接到SQL Server Express时的逻辑数据库名称,例如
MYDATABASE
,而不是
.mdf
文件的整个文件名。我认为SMO不允许您备份单独的
.mdf
文件如果您查看我在上面发布的屏幕截图,我会放置一个我要备份的数据库的数据库信息的屏幕截图。这是sqlserver2005中数据库节点上显示的名称。我做错了吗?我是说:你不能用SMO备份一个“独立的”
.mdf
文件。您需要将
.mdf
文件附加到SQL Server Express,为其指定一个逻辑数据库名称,然后将该逻辑数据库名称用于SMO备份。整个“attach.mdf on the fly”功能有点混乱,坦率地说,不应该使用它,它将在SQLServer2012(“Denali”)中停止使用