Какой вариант SQLServer вы используете? Вот некоторая полезная информация.
Если это SQLServer Express, вам нужно добавить базу данных в ваш проект и установить для действия сборки значение «content», а для «copy to output directory» - «copy if newer». Это обеспечит включение базы данных в развертывание.
Далее перейдите в диалоговое окно предварительных условий и выберите SQLServer Express. Когда пользователь запускает файл setup.exe, он проверяет, установлен ли он, и, если нет, установит его.
Если вам нужна новейшая версия SQLServer Express, вы можете найти, как создать пакет начальной загрузки здесь - Microsoft не предоставляет его, но эта статья предоставляет необходимый вам XML-файл и ссылки на загрузка SQLServer Express.
Если вы используете SQLCE, вам необходимо присоединить базу данных (* .sdf) к вашему проекту и установить свойства, как указано выше. Тем не менее, вам не нужно публиковать это как предварительное условие, вы можете просто включить DLL в ваш проект, как отмечено здесь .
Когда вы публикуете новую версию, если база данных изменилась, ClickOnce поместит новую базу данных в DataDirectory и поместит старую в подпапку \ pre DataDirectory, и вам придется написать код для ее обработки. Это звучит привлекательно, но я думаю, что это опасно. Если вы даже откроете свою базу данных, чтобы посмотреть на структуру, она изменит отметку даты / времени, и ClickOnce сочтет ее новой и опубликует ее, и вы получите звонки от своих клиентов об отсутствии их данных, если только вы не обработаете это.
Поэтому я обычно рекомендую вам скопировать базу данных в LocalApplicationData, когда пользователь впервые устанавливает ваше приложение, и обрабатывать любые обновления структуры программным образом после этого. Есть статья о том, как это сделать здесь .