Как программно создать новый локальный экземпляр SQL Server? - PullRequest
0 голосов
/ 03 сентября 2018

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

Если я этого не сделаю, как мне создать это программно?

const SERVER_NAME = "MyDbServer";

private DbConnection GetConnection() {
   var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
   return new SqlConnection(connectionString);
}

public void Test(){
   try {
      //assume this is valid and calls GetConnection() internally
      var _ = Query<int>('select count(*) from USERS', null);
   } catch (System.Data.SqlClient.SqlException) {
      DO SOMETHING HERE TO CREATE THE SERVER
      var conn = GetConnection();
      var command = SqlCommand('create database MyDatabase;', conn);
      conn.Open();
      command.ExecuteNonQuery();
   }

Что мне нужно добавить в раздел «ЧТО-ТО ЗДЕСЬ, ЧТОБЫ СОЗДАТЬ СЕРВЕР»?

РЕДАКТИРОВАТЬ: Как отмечено в заголовке, это локальный сервер, который я пытаюсь создать. Для целей этого вопроса предположим, что на этом компьютере установлена ​​SqlLocalDB SQL Server, но не существует локального сервера с именем, которое я хочу использовать.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

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

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

0 голосов
/ 04 сентября 2018

Уверен, что создание "сервера" LocalDb происходит автоматически: https://blogs.msdn.microsoft.com/sqlexpress/2011/07/12/introducing-localdb-an-improved-sql-express/

LocalDB не создает никаких служб баз данных; Процессы LocalDB запускается и останавливается автоматически при необходимости. Приложение просто подключение к «Источник данных = (localdb) \ v11.0» и процесс LocalDB начался как дочерний процесс приложения. Через несколько минут после последнее соединение с этим процессом закрыто, процесс отключается.

То есть, когда вы используете LocalDb, вы вообще не работаете с сервера - вы просто используете sqlserver.exe для работы с базой данных. Поэтому, чтобы ответить на ваш вопрос, вам не нужно помещать что-либо в раздел «ЧТО-ТО ЗДЕСЬ, ЧТОБЫ СОЗДАТЬ СЕРВЕР».

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