как развернуть базу данных - PullRequest
0 голосов
/ 05 апреля 2011

Привет, каков наилучший способ развернуть скрипт базы данных на моем клиентском ПК? Я установил приложение и установил SQL Server Studio на моем клиентском компьютере. Все прошло гладко, кроме случаев, когда мне нужно обновить базу данных. Как мне обновить базу данных, не заставляя меня идти на их компьютер, чтобы запустить скрипт обновления .sql. Этот вопрос применяется, когда мое приложение используется в другой стране.

Для обновления кода хорошо, так как я использую ClickOnce. Это оконное приложение.

Пожалуйста, помогите

1 Ответ

2 голосов
/ 05 апреля 2011

Я бы отправил файл SQL вместе с вашим приложением и имел бы логику запуска приложения, которая всегда проверяет определенное место на наличие сценариев, которые необходимо запустить. Это может быть так же просто, как проверка папки [путь к приложению] \ MigrationScripts для всех файлов .sql. Если файлы найдены, прочитайте их содержимое и выполните для базы данных.

После завершения проверки (и потенциальных обновлений базы данных) продолжайте загрузку приложения.

Пример кода (не проверено) и очень простая реализация:

public class Migration
{
    private string _migrationPath = @"C:\temp\MigrationSteps"; //change
    private string[] _sqlFiles = null;

    public Migration()
    {
        Initialize();
    }

    public Migration(string path)
    {
        _migrationPath = path;
        Initialize();
    }

    private void Initialize()
    {
        _sqlFiles = Directory.GetFiles(_migrationPath, "*.sql");
    }

    public bool Run()
    {
        bool success = true;

        foreach (string sqlFile in _sqlFiles)
        {
            ExecuteRun(File.ReadAllText(sqlFile));
        }

        return success; //Do something with this value
    }

    public bool CleanUp()
    {
        //Put some logic here to "clean up" files that have already been run.
        throw new NotImplementedException();
    }

    private bool ExecuteRun(string sqlText)
    {
        //Call your data access library and execute the sqlText
        throw new NotImplementedException();
    }
}

Использование:

Migration migration = new Migration();
if (migration.Run())
{
    migration.CleanUp();
}
else
{
    //Do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...