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

Posted

技术标签:

【中文标题】如何以编程方式创建新的本地 SQL Server 实例?【英文标题】:How to programmatically create a new local SQL Server instance? 【发布时间】:2018-09-03 20:51:34 【问题描述】:

我正在尝试创建一个无需任何外部设置脚本即可设置自己的数据库的程序。我在以编程方式创建 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 已安装在此计算机上,但不存在具有我要使用的名称的本地服务器。

【问题讨论】:

您想使用正确的磁盘布局、备份设置和用户帐户(包括从 C# 程序中的异常处理程序获取许可证)来配置 SQL 服务器实例? 我能否谦虚地建议您让您的应用程序支持 SQL Server Compact 版本,并要求没有数据库服务器的用户为 Compact 版本配置连接字符串?然后你可以像这个问题一样创建数据库:***.com/questions/1487845/… 没有简单的方法来设置 Mssql 数据库,因为需要许多配置。 O 可以建议您尝试使用 docker 和 sql server 2017 映像,如果您有可用的 docker (docs.microsoft.com/en-us/sql/linux/…),如果没有,我会推荐一个安装步骤来“手动”安装服务器,因为创建逻辑在您的代码中创建服务器将非常困难,并且只有在第一次运行时才有优势 使用 SqlLite?它不是 SQL 服务器,但它不需要 SQL 服务器。它是您可以使用的文件内数据库。 您使用create 选项运行sqllocaldb: docs.microsoft.com/en-us/sql/tools/…? 【参考方案1】:

我以前做过这个,虽然这绝对有可能,但它不是微不足道的,当你在不同的机器上安装时,你肯定会遇到很多边缘情况。

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

【讨论】:

【参考方案2】:

很确定创建 LocalDb“服务器”是自动的:https://blogs.msdn.microsoft.com/sqlexpress/2011/07/12/introducing-localdb-an-improved-sql-express/

LocalDB 不创建任何数据库服务; LocalDB 进程是 需要时自动启动和停止。该应用程序只是 连接到“Data Source=(localdb)\v11.0”,LocalDB 进程为 作为应用程序的子进程启动。几分钟后 与此进程的最后一个连接已关闭,该进程将关闭。

也就是说,当您使用 LocalDb 时,从技术上讲,您根本不会在服务器上运行——您只是在使用 sqlserver.exe 来执行数据库操作。因此,要回答您的问题,您无需在“在此处执行操作以创建服务器”部分中添加任何内容。

【讨论】:

如果这是答案,它会使问题重复... ***.com/questions/1487845/… 我可能会将答案添加到***.com/questions/1487845/… 比您发布的要完整得多 除了那个答案是指与LocalDb完全不同的SQL Server Compact Edition。

以上是关于如何以编程方式创建新的本地 SQL Server 实例?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将表添加到 Microsoft SQL Server Compact 3.5 数据库

C# - 以编程方式创建 SQL Server 表

以编程方式创建新的 H2 服务器

C# - 创建新的 SQL Server 数据库导致错误

以编程方式创建 SQL Server 代理作业

如何在.NET中以编程方式在SQL Server中获取VIEW的sql代码