0
我試圖通過網絡還原SQL Server備份。在SQL Server上還原網絡數據庫而不復制它
我發現很多方法通過網絡複製文件,但備份文件很大,我不想複製它們。
我的問題很簡單:這條線
var fileList = restore.ReadFileList(smoServer);
執行SQL Server上。
這一個定義備份我嘗試恢復
var backupDeviceItem = new BackupDeviceItem(path, DeviceType.File);
的問題是路徑是這樣的:10.\*.\*.\*\\file.bak
所以我得到那個說
「10.異常* *。*「在服務器上找不到路徑
這就是說我需要提供機器的憑據10.\*.\*.\*
如果路徑參數是C:\file.bak
,我的代碼工作 - 如果它是\\10.\*.\*.\*\\file.bak
,我的代碼說「文件未找到」。
的BackupDeviceItem
有憑據,但它的SQL憑據構造......或者我已經我的SQL Server ...我需要具有.bak
文件機器憑證......
任何想法?
以防萬一有人想在這裏我的整個代碼是幫助我的
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
using System;
using System.IO;
namespace SqlManager.Tools
{
public class SMOHelper
{
public static void RestoreDatabase(string path, string restore_name, SqlConfig sqlAccess)
{
ServerConnection SqlConnection;
if (String.IsNullOrWhiteSpace(sqlAccess.username))
{
SqlConnection = new ServerConnection(sqlAccess.uri);
}
else
{
SqlConnection = new ServerConnection(sqlAccess.uri, sqlAccess.username, sqlAccess.password);
}
Server smoServer = new Server(SqlConnection);
try
{
// On crée la BDD
if (!smoServer.Databases.Contains(restore_name))
{
Logger.Info("Creation de la base:");
Logger.Info(restore_name);
var database = new Database(smoServer, restore_name);
database.Create();
}
Logger.Success("Connexion SQL réussi");
var targetDatabase = smoServer.Databases[restore_name];
targetDatabase.RecoveryModel = RecoveryModel.Simple;
targetDatabase.Alter();
Restore restore = new Restore();
var backupDeviceItem = new BackupDeviceItem(path, DeviceType.File);
restore.Devices.Add(backupDeviceItem);
restore.Database = restore_name;
restore.ReplaceDatabase = true;
restore.NoRecovery = false;
restore.Action = RestoreActionType.Database;
var fileList = restore.ReadFileList(smoServer);
Logger.Success("Fichier de backup trouvé sur le serveur distant");
var dataFile = new RelocateFile();
dataFile.LogicalFileName = fileList.Rows[0][0].ToString();
dataFile.PhysicalFileName = smoServer.Databases[restore_name].FileGroups[0].Files[0].FileName;
var logFile = new RelocateFile();
logFile.LogicalFileName = fileList.Rows[1][0].ToString();
logFile.PhysicalFileName = smoServer.Databases[restore_name].LogFiles[0].FileName;
restore.RelocateFiles.Add(dataFile);
restore.RelocateFiles.Add(logFile);
var backupHeaderInfo = restore.ReadBackupHeader(smoServer);
smoServer.KillAllProcesses(restore_name);
Logger.Info("Debut de la restauration sur le server");
restore.SqlRestore(smoServer);
Logger.Success("Restauration terminer");
targetDatabase.SetOnline();
SqlConnection.Disconnect();
}
catch (SmoException ex)
{
Logger.Error("SMO Message : " + ex.Message);
Logger.Error("SMO Exception : " + ex.InnerException);
}
catch (IOException ex)
{
Logger.Error("IO Message : " + ex.Message);
Logger.Error("IO Exception : " + ex.InnerException);
}
catch (Exception ex)
{
Logger.Error("Message : " + ex.Message);
Logger.Error("Exception : " + ex.InnerException);
}
}
}
}
是不是很清楚我沒有發送的IP在計算器上,但我的IP是正確的,像10.20.30.40 \ backupfolder – Jebik
從這裏開始:http://www.howtogeek.com/51788/how-to-backup- SQL的數據庫到一個網絡股/ – DWRoelands