我在C#.NET中开发一个允许用户备份数据库的Windows窗体客户端应用程序。每次进行备份时,SQL Server中的sp都会执行以下逻辑:
DECLARE @File VARCHAR (1000) = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Backup\DBCompany-'
+ (SELECT REPLACE(REPLACE(CONVERT(VARCHAR(500), GETDATE(), 120),':','_'), ' ','_')+ '.bak');
BACKUP DATABASE [DBCompany]
TO DISK = @File
NAME = 'DBCompany';
GO
正如您所看到的.bak文件根据保存的日期和时间获取名称,因此我的目录中有不同的文件,如下所示:
DBCompany-2015-06-04_20_21_08.bak
DBCompany-2014-02-24_19_01_39.bak
DBCompany-2014-01-22_23_30_58.bak
....
我知道恢复.bak文件的语法,但我试图让用户选择其中一个文件并将其恢复,但我无法找到任何方法来检索这些文件文件并向他显示除了使用OpenFileDialog控件(我不想要)之外。
据我研究,可以将PowerSheel集成到我的C#代码中。有人能指出我如何做到这一点的正确方向吗?
答案 0 :(得分:1)
如果您知道备份文件的物理位置,可以使用System.IO;命名空间。从这个
抱歉,这可能是非常冗长的代码,所以我已经给出了描述以达到您的要求。
谢谢,
答案 1 :(得分:1)
您可以在没有Powershell的情况下通过C#轻松完成此操作。假设应用程序与SQL Express实例在同一个框上运行,下面是一个加载组合框的示例:
var backupFileList = System.IO.Directory.GetFiles(@"C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Backup\DBCompany", "*.bak");
foreach(var backupFile in backupFileList)
{
this.comboBoxBackupFiles.Items.Add(backupFile);
};