簡體   English   中英

如何使用PowerShell和C#檢索每個.bak文件?

[英]How can I retrieve every .bak file with PowerShell and C#?

我正在用C#.NET開發Windows Form客戶端應用程序,該應用程序允許用戶備份數據庫。 每次進行備份時,都會在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#代碼中。 有人可以為我指出正確的方向嗎?

如果您知道備份文件的物理位置,則可以使用System.IO。 命名空間。 由此

  1. 獲取物理位置中可用文件的列表。
  2. 列出所有文件名並向用戶顯示文件名。
  3. 用戶選擇后,還原所選的備份文件。

抱歉,要做的代碼可能很冗長,因此我給出了滿足您要求的描述。

謝謝,

您可以從C#中輕松地執行此操作,而無需Powershell。 假定該應用程序與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);
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM