【问题标题】:Create automated installer of VB.Net program + SQL Server & script to create the DB & user创建 VB.Net 程序 + SQL Server 和脚本的自动安装程序以创建数据库和用户
【发布时间】:2015-04-20 21:03:40
【问题描述】:

我正处于在客户端/服务器场景中构建 Vb.Net WinForms 应用程序的最后阶段(存储在 SQL Server 中的数据的表单)

在这个特定的项目中,我们不会部署软件,因此我们正在寻找一种方法来尽可能地自动化数据库部分的设置。

客户端应用程序正在使用 ClickOnce 进行部署,因此已排序。

至于数据库设置,您能建议自动化的最佳方法吗? 通常部署会像这样(这是我们想要自动化的):

  • 在混合模式身份验证中将 SQL Server Express Edition 作为单个实例安装(我们必须使用混合模式,因为我们不能保证我们会拥有 AD)。 (如果可能让用户在安装过程中指定 SA 密码,如果不可能,我们可以将其设置为预设)

  • 将实例配置为使用固定的 TCP/IP 端口

  • 在 Windows 防火墙中打开 TCP/IP 端口

  • 最后运行 SQL 脚本来创建数据库(表/存储过程/基准日期)

请记住,我们使用的是 Visual Studio Express,因此我们没有 InstallShield 或“应用程序设置”模板。

您能否根据您的经验就最佳行动方案提出建议/建议?

谢谢 佩德罗。

【问题讨论】:

  • 您是否打算支持数据库中的更新?

标签: sql-server vb.net sql-server-2008-r2 installation setup-project


【解决方案1】:

除了我们自己不安装 SQL Server 实例外,我们也做了类似的事情。其余的(数据库创建、使用 GO 运行脚本等)我们通过 C# 使用 SMO (https://msdn.microsoft.com/en-us/library/ms162169.aspx) 进行。 或者,如果您使用 SSDT (https://msdn.microsoft.com/en-us/data/tools.aspx),可以轻松地将数据库部分部署为数据层应用程序 (https://msdn.microsoft.com/en-us/library/ee210546.aspx),以便能够控制版本控制等。

【讨论】:

  • 谢谢。这几乎是我的后备计划。就我而言,我打算将整个数据库编写为 T-SQL 脚本,并在安装后针对目标服务器运行脚本。在这种特殊情况下,与使用 T-SQL 脚本相比,SMO 有什么特别的优势吗?
  • 基本上我们会运行脚本,但我们使用 SMO 来运行。主要优点是您可以拥有与从 SSMS 运行脚本相同的执行选项,即使用事务、使更改视图成为可能的 GO 语句等。
【解决方案2】:

我之前在应用程序中发布过 sql,这可能会很痛苦 - 您可以编写安装脚本,但它很复杂且容易出错。

你需要使用sql server express吗,也许精简版会给你你想要的?部署要简单得多。

如果您确实需要分发它并且您不希望用户自己设置它,您可以查看虚拟化它,您可以使用spoon.net 来完成它,因此无需进行任何设置,只需启动 exe当您的程序启动时 - 这样您就可以随意配置它,使用安全的 sa 密码等,然后下载并运行。

操作步骤:

https://support.spoon.net/customer/portal/articles/1782546-virtualizing-sql-server-express-2008-using-the-snapshot-method

勺子很便宜,在这种情况下真是太棒了!

编辑

【讨论】:

  • 如果我理解正确,这将使用我的应用程序/安装程序打包一种 SQL 服务器的“便携式”安装。您知道从许可的角度来看这是否可以/允许这样做吗?此外,在这种情况下,您如何解决使用命名实例和/或设置固定端口并在防火墙上打开端口以允许传入客户端连接的问题?谢谢
  • 检查许可,但应该没问题(不要相信堆栈溢出注释的许可!),我会将其配置为使用相同的端口并连接到该端口而不是命名实例。如果您拥有正确的权限,您可以编写 Windows 防火墙脚本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 2012-08-30
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多