Копирование баз данных между серверами sql - PullRequest
2 голосов
/ 17 ноября 2011

Я занимаюсь разработкой веб-приложения для копирования данных между серверами SQL.Инструмент позволит вам указать, на какой сервер вы копируете данные с / на, а затем скопирует конкретную базу данных (которая всегда имеет одно и то же имя) с исходного сервера на конечный сервер.

Какой метод лучшесделай это?Данные могут быть довольно большими, поэтому необходимо учитывать и скорость.


Я пытаюсь запустить пакет служб SSIS, созданный мной с помощью SQL Server Management Studio.Пакет хранится локально.

План состоит в том, чтобы изменить строки подключения источника и назначения и запустить пакет.

Это мой код для этого:

public void DataTransfer(String sourceConnection, String destConnection, String pkgLocation)
{
        Package pkg;
        Application app;
        DTSExecResult pkgResults;

        try
        {
            app = new Application();
            pkg = app.LoadPackage(pkgLocation, null);

            foreach (ConnectionManager connectionManager in pkg.Connections)
            {
                SqlConnectionStringBuilder builder;
                switch (connectionManager.Name)
                {
                    case "SourceConnection":
                        builder = new SqlConnectionStringBuilder(sourceConnection);
                        builder.Remove("Initial Catalog");
                        builder.Add("Initial Catalog", "StagingArea");
                        var sourceCon = builder.ConnectionString + ";Provider=SQLNCLI;Auto Translate=false;";
                        //Added spaces to retain password!!!
                        sourceCon = sourceCon.Replace(";", "; ");
                        connectionManager.ConnectionString = sourceCon;
                        Debug.WriteLine(connectionManager.ConnectionString.ToString());
                        break;
                    case "DestinationConnection":
                        builder = new SqlConnectionStringBuilder(destConnection);
                        builder.Remove("Initial Catalog");
                        builder.Add("Initial Catalog", "StagingArea");
                        var destCon = builder.ConnectionString + ";Provider=SQLNCLI;Auto Translate=false;";
                        //Added spaces to retain password!!!
                        destCon = destCon.Replace(";", "; ");
                        connectionManager.ConnectionString = destCon;
                        Debug.WriteLine(connectionManager.ConnectionString.ToString());
                        break;
                }
            }
            pkgResults = pkg.Execute();
        }
        catch (Exception e)
        {

            throw;
        }

        Debug.WriteLine(pkgResults.ToString());
}

Когда pkg выполняется, я получаю следующие исключения:

A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in Microsoft.SqlServer.ManagedDTS.dll
A first chance exception of type 'Microsoft.SqlServer.Dts.Runtime.DtsComponentException' occurred in Microsoft.SqlServer.ManagedDTS.dll

Я не совсем уверен, куда идти отсюда, есть идеи?

1 Ответ

1 голос
/ 17 ноября 2011

Я бы написал SSIS для копирования / преобразования данных, а веб-сайт просто настроил строку подключения и запустил пакет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...