Я пытаюсь понять концепцию создания программы, которая использует базу данных SQL Server, но я привык запускать ее только на моем локальном компьютере - PullRequest
2 голосов
/ 26 апреля 2010

Как я могу заставить программу использовать базу данных SQL Server и заставить эту программу работать на любом компьютере, на котором она установлена.

Если бы вы следили за моей цепочкой вопросов сегодня, вы бы знали, что я делаю пакет с открытым исходным кодом и бесплатную службу поддержки для малого и среднего бизнеса.

  1. Клиентское приложение. Клиентское приложение - это приложение Windows Forms. При установке и первом запуске на каждом клиентском компьютере будет запрошен адрес основного сервера службы поддержки.

  2. Сервер. Здесь я планирую обрабатывать все входящие запросы помощи, показывать их ИТ-специалистам и предоставлять службы WCF для клиентского приложения.

Моя дилемма заключается в том, что я знаю , как заставить программу работать на моей локальной машине ; но я действительно озадачен тем, как заставить это работать для всех, кто хочет загрузить и установить бит сервера на свой Windows Server.

Должен ли я создать сценарий SQL и запустить его на сервере MS SQL, когда пользователь хочет установить приложение «сервер»?

Большое спасибо всем за ваше драгоценное время и усилия, чтобы научить меня. Это действительно действительно оценили. :)

Edit: Чтобы уточнить, каждый бизнес будет иметь свой сервер полностью отдельно от меня. У меня не будет доступа к ним, и они никак не будут связаны со мной. (Я не знаю, почему я должен уточнить это: P)

Итак, при условии, что установлен АБСОЛЮТНО НЕТ СЕРВЕРА БАЗЫ ДАННЫХ ; что я могу сделать?

Ответы [ 5 ]

0 голосов
/ 26 апреля 2010

Хорошо, часть ответа, касающаяся базы данных SQL Server (и, честно говоря, SQL Server Express займет у вас путь long - 4 ГБ данных) и элементы установки сервера.

Во-первых, сделайте установку SQL SEP, сделайте его обязательным условием, возможно, настройте ваши установщики для тестирования (сложно), но по существу укажите их на ссылки на SQL Server Express и дайте им поработать с ним).

Во-вторых, отдельные установщики, как предлагается, для вашего клиента и элементов вашего сервера.

Наконец, как построить базу данных - я бы предложил использовать код для создания и поддержания (обновления) схемы, т. Е. Когда у вас есть соединение с сервером, вы можете запустить код, который вызывает DDL, который делает то, что необходимо (что-то вроде здесь предлагается: Как создать «встроенный» файл базы данных SQL 2008, если он не существует? )

Вопрос - вы намерены, чтобы все сообщения от клиентов проходили через ваш сервис WCF?

0 голосов
/ 26 апреля 2010

Я понимаю, что вы пытаетесь сделать. На вашем месте я бы сделал следующее:

  • Обеспечить 2 загрузки - 1 для клиента и 1 для сервера.
  • Забудьте о MS SQL Server и, возможно, перейдите на MySQL, поскольку он действительно с открытым исходным кодом. Возможно, вы могли бы обойтись без использования MS SQL Server Express Edition, но если ваш набор данных становится гигантским (что характерно для баз данных службы поддержки), вы застрянете.
  • Как отмечали другие люди, при первом запуске (или во время установки) клиентское приложение обнаружит сервер.
0 голосов
/ 26 апреля 2010

Хотите, чтобы на вашем компьютере работал один экземпляр SQL Server или по одному на каждом из серверов ваших клиентов? Если это последнее, вам нужно будет установить экземпляр SQL Server - что угодно, от (бесплатного, но ограниченного и не с открытым исходным кодом) SQL Server Express до более дорогого SKU - на каждом сервере. Вы можете включить этот шаг в установочный пакет server ; Установки MSI упрощают установку MSSQL.

Тогда вам нужно будет удалить схему и, возможно, данные в этом экземпляре. Вы можете сделать это как шаг в вашем установщике или как часть процесса установки вашего приложения. Возможно, на сервере уже установлен экземпляр SQL Server или более одного, и ваш шаг после установки должен позволить пользователю указать, на какой экземпляр устанавливать ваши компоненты.

Затем включите часть конфигурации базы данных в ваше клиентское приложение. Попросите пользователя - или возьмите его из файла конфигурации во время установки клиента, чтобы разрешить автоматическую или несанкционированную установку клиента - сведения о подключении к серверу, такие как имя сервера и данные аутентификации.

Слово об аутентификации - поскольку вы, похоже, создаете инструменты для Windows, используйте встроенную (управляемую доменом) аутентификацию Windows, если это вообще возможно. Не занимайтесь хранением логинов, а вместо этого полагайтесь на существующий домен для управления логинами. Хорошая стратегия - использовать активные группы каталогов для управления доступом. Предоставьте доступ к определенной группе в SQL Server и отложите членство в группе до самой Active Directory. Если вы не можете получить доступ, необходимый для этого, предоставьте разрешения самим учетным записям пользователей AD. Избегайте создания имен входа SQL Server, использование которых открывает дверь к возможным проблемам с безопасностью.

0 голосов
/ 26 апреля 2010

Не так просто развернуть клиент-серверное решение с автоматической установкой.

Тогда вам, вероятно, будет лучше развернуть установку сервера вместе с ядром базы данных и базой данных скелета, которые уже настроены в соответствии с вашими пожеланиями. Это сделано для того, чтобы не вмешиваться в существующий сервер - кто знает, что на нем.

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

0 голосов
/ 26 апреля 2010

Ваше приложение для установки должно:

  1. Получите имя SQL Server, имя пользователя (с соответствующими правами на создание базы данных) и пароль.

  2. Либо запускайте сценарии SQL, используя локально установленный инструмент командной строки, либо из кода, использующего SMO (например), против предоставленного пользователем сервера с предоставленными учетными данными.

Кстати, прежде чем тратить усилия на написание справочной службы с открытым исходным кодом, проверили ли вы, что уже доступно ? Кроме того, Служба поддержки с открытым исходным кодом

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