Распределение изменений таблицы SQL - PullRequest
2 голосов
/ 21 января 2009

У меня есть приложение WinForm, созданное с использованием VS 2008 (C #) и SQL Server Express 2008, которое в настоящее время развернуто на ПК для тестовых пользователей.

Мне нужно внести изменения в структуру базы данных (добавить поля, таблицы и т. Д.), И мне интересно, как лучше распределить изменения на ПК пользователей (без потери данных пользователей).

Из того, что я узнал до сих пор, мне нужно будет записать изменения в файл сценария. Но как лучше распределить файлы сценариев, не запуская их вручную в SQL Server Management Studio? Какой метод автоматического распространения вы предлагаете? Нужно ли мне писать собственное приложение для обновления?

В настоящее время я использую ClickOnce для распространения изменений в файле EXE. Является ли ClickOnce жизнеспособным решением, когда вам нужно внести изменения в базу данных с новой версией?

ТИА

Ответы [ 3 ]

3 голосов
/ 21 января 2009

Существует множество способов сделать это - либо создать свою собственную домашнюю версию (например, в настоящее время мы упаковываем сценарии изменения базы данных в DLL как встроенные ресурсы, и у нас есть механизм, который будет запускать их на клиентском компьютере). во время установки и / или обновления), или вы можете посмотреть на доступные продукты .NET, такие как Red-Gate SQL Packager , которые могут сэкономить вам много времени и усилий.

1 голос
/ 21 января 2009

Вы можете вызвать osql или sqlcmd, которые поставляются с MSSQL.

Или вы можете использовать SMO для запуска сценариев изменения базы данных. См. этот блог , как это делается.

1 голос
/ 21 января 2009

Вы можете написать свое приложение при запуске, чтобы прочитать файл скрипта из папки приложения и выполнить его. Вы можете сделать так, чтобы скрипт обновил значение в базе данных, как только это будет сделано, чтобы предотвратить его повторный запуск.

Вы можете развернуть новый файл скрипта как контент, и приложение выполнит его при следующем запуске, обновив вашу базу данных

...