如何以编程方式创建新的本地SQL Server实例?

时间:2018-09-03 20:51:35

标签: c# sql-server database

我正在尝试创建一个无需外部安装脚本即可设置自己的数据库的程序。我在通过编程方式创建SQL Server数据库时发现this question,但是它隐式地假定您已经有服务器要连接。

如果不这样做,如何以编程方式创建它?

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();
   }

我需要在“要做的事情创建服务器”部分中添加什么?

编辑:如标题中所述,这是我要创建的本地服务器。出于此问题的目的,假定此计算机上安装了SQL Server的SqlLocalDB,但是不存在使用我要使用的名称的本地服务器。

2 个答案:

答案 0 :(得分:1)

我之前已经做过,虽然绝对有可能做到这一点并非微不足道,但是当您安装在不同的计算机上时,您肯定会遇到很多边缘情况。

您需要用于SQL Server的独立安装程序(为SQL Express抓住单个文件安装程序),然后使用文章Install SQL Server from the Command Prompt作为指导,为安装指定选项。

答案 1 :(得分:0)

完全确定自动创建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来完成数据库操作。因此,要回答您的问题,您无需在“要做某些事情来创建服务器”部分中放置任何内容。