Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
C# 使用c和SQL Server备份连接的数据库文件(.mdf)_C#_.net_Sql_Sql Server_Winforms - Fatal编程技术网

C# 使用c和SQL Server备份连接的数据库文件(.mdf)

C# 使用c和SQL Server备份连接的数据库文件(.mdf),c#,.net,sql,sql-server,winforms,C#,.net,Sql,Sql Server,Winforms,我试图在Winforms应用程序中创建数据库备份。但它不起作用 这是我的代码: cn.Open(); cmd = new SqlCommand(); cmd.Connection = cn; cmd.CommandText=@"BACKUP DATABASE Database1.mdf TO DISK = 'C:\db1.bak'"; dr = cmd.ExecuteReader(); dr.close(); cn.Close(); 这里是SqlConnection。cmd是SqlComman

我试图在Winforms应用程序中创建数据库备份。但它不起作用

这是我的代码:

cn.Open();
cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText=@"BACKUP DATABASE Database1.mdf TO DISK = 'C:\db1.bak'";
dr = cmd.ExecuteReader();
dr.close();
cn.Close();
这里是SqlConnection。cmd是SqlCommand,dr是SqlDataReader。请给我一个解决方案。

为什么你不能使用

创建如下方法

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;

public void BackupDatabase(string databaseName, string userName, string password, string serverName, string destinationPath)
{
    //Define a Backup object variable.
    Backup sqlBackup = new Backup();

    //Specify the type of backup, the description, the name, and the database to be backed up.
    sqlBackup.Action = BackupActionType.Database;
    sqlBackup.BackupSetDescription = "BackUp of:" + databaseName + "on" + DateTime.Now.ToShortDateString();
    sqlBackup.BackupSetName = "FullBackUp";
    sqlBackup.Database = databaseName;

    //Declare a BackupDeviceItem
    BackupDeviceItem deviceItem = new BackupDeviceItem(destinationPath + "FullBackUp.bak", DeviceType.File);
    //Define Server connection
    ServerConnection connection = new ServerConnection(serverName, userName, password);
    //To Avoid TimeOut Exception
    Server sqlServer = new Server(connection);
    sqlServer.ConnectionContext.StatementTimeout = 60 * 60;
    Database db = sqlServer.Databases[databaseName];

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

    //Add the device to the Backup object.
    sqlBackup.Devices.Add(deviceItem);
    //Set the Incremental property to False to specify that this is a full database backup.
    sqlBackup.Incremental = false;

    sqlBackup.ExpirationDate = DateTime.Now.AddDays(3);
    //Specify that the log must be truncated after the backup is complete.
    sqlBackup.LogTruncation = BackupTruncateLogType.Truncate;

    sqlBackup.FormatMedia = false;
    //Run SqlBackup to perform the full database backup on the instance of SQL Server.
    sqlBackup.SqlBackup(sqlServer);
    //Remove the backup device from the Backup object.
    sqlBackup.Devices.Remove(deviceItem);
}
用于使用上面显示的名称空间。您必须添加这些名称空间的引用。为此-

转到应用程序,右键单击“引用”文件夹,然后选择“添加引用”

现在转到“浏览”选项卡并浏览以下路径- C:\Program Files\Microsoft SQL Server\100\SDK\Assembly

现在选择以下DLL

Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Management.Sdk.Sfc.dll, Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoExtended.dll, Microsoft.SqlServer.SqlEnum.dll


注意:DLL的位置可能因MS SQL Server的版本而异,我对此不确定。

请提供更多详细信息。什么东西不管用?有错误吗?它就是不起作用吗?您是否正在检查服务器上的备份位置,而不是连接到服务器的计算机上的备份位置(如果它们不同)?您认为它现在工作是什么意思?有任何异常或错误消息吗?将数据库[Database1]备份到磁盘='C:\db1.bak'和cmd.executeNonQueryk请记住此处的C:\db1.bak是相对于SQL server的。不是向提出请求的机器。我还有一个愚蠢的问题!我怎样才能找到密码?哪个密码?如果你说的是sql server密码,你在安装sql server时应该设置的密码,我没有给出!我所做的唯一一件事就是在完整模式下安装visual studio 2008 professional edition。我很惊讶,那么您要进行哪个数据库备份,该数据库应该在sql server中的某个位置。啊!我的服务器资源管理器看起来像这样它可能会帮助您找到问题的数据连接-database1.mdf-Nortwind.mdf服务器-mothivihar我通过添加->新建项目->基于服务的数据库添加了database1,通过选择数据库文件-mothivihar添加了northwind