【问题标题】:How to restore backup form one linked server to another linked server using C# SMO如何使用 C# SMO 将备份从一个链接服务器恢复到另一台链接服务器
【发布时间】:2019-06-26 01:22:38
【问题描述】:

想要使用 C# 将数据库备份从链接服务器 A 还原到位于链接服务器 B 上的数据库。更喜欢使用 SMO。

我可以从本地备份恢复到本地机器。

{
 conn = new ServerConnection
           {
               ConnectionString = @"Data Source =
 (localdb)\MSSQLLocalDb;Initial Catalog=master;Integrated Security=true",                
            };


        try
        {
            //Restore Full
            srv = new Server(conn);
            //lsrv = srv.LinkedServers[@"DEVSQL\ALPHA"]; need to figure out how to restore to linked server instead of local.
            //srv.KillAllProcesses("G4TestNew");
            var res = new Restore();
            res.Database = "G4TestNew";
            res.Action = RestoreActionType.Database;
            filePath = @"\\CABCSERVER\Database\Temp\Full.bak";
            res.Devices.AddDevice(filePath, DeviceType.File);
            res.ReplaceDatabase = true;
            res.NoRecovery = true;
            var dataFile = new RelocateFile("G4Test", @"C:\TBD\G4Test.mdf");
            var logFile = new RelocateFile("G4Test_log", @"C:\TBD\G4TestNew.ldf");

            res.RelocateFiles.Add(dataFile);
            res.RelocateFiles.Add(logFile);

            res.SqlRestore(srv);

}

编辑(添加更多细节):。 在这种情况下,链接服务器是通过“sql server authentication”访问的,应用程序无法访问直接连接所需的凭据,只能使用“Integrated Security”连接到 localdb。

【问题讨论】:

    标签: c# sql-server .net-core linked-server smo


    【解决方案1】:

    在 SMO 中,您不会连接到一台服务器然后管理链接服务器。而是直接连接到目标服务器。例如:

    ConnectionString = @"Data Source =
     DEVSQL\ALPHA;Initial Catalog=master;Integrated Security=true",
    srv = new Server(conn);
    

    【讨论】:

    • 如果链接服务器是通过“sql server authentication”访问的,而应用程序无法访问直接连接所需的凭据,只能使用“Integrated Security”连接到 localdb,该怎么办?
    • 那就不要使用SMO了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多