【问题标题】:Deployment of SQL Server: installing a second instance?SQL Server 的部署:安装第二个实例?
【发布时间】:2009-12-17 13:01:04
【问题描述】:

简单的问题。我正在开发一个 Delphi 2007/WIN32 应用程序,它现在使用 MS Access 作为简单的数据存储。我必须修改它以支持 SQL Server Express,这很容易。这些修改正在起作用,因此可以使用 SQL Server 或 MS Access 部署应用程序。 (无论用户喜欢什么。)我确实考虑过将整个应用程序与 SQL Compact 一起部署,但这并不实用。使用 SQL Server Express 2008 代替 2005 是一种选择,但也有一些我们暂时不想解决的令人讨厌的副作用。

问题在于部署整个项目。 SQL Server 的安装需要安静的安装,因此用户不会注意到它。文档中提到了 SQL Server,因此他们知道它就在那里。我们只是不想用技术问题来打扰他们。在大多数情况下,这样的安装就可以了。

但是如果用户已经安装了用于其他用途的 SQL Server (2005) 怎么办?就个人而言,我更愿意在他们的系统上安装第二个 SQL Server 实例,这样它就不会与其他安装冲突。 (因此,如果他们卸载其他应用程序,SQL 实例将保持安装状态。)

虽然 SQL Server 2005 和 2008 可以简单地通过为实例使用两个不同的名称来安装在同一系统上,但我想知道是否也可以在一个系统上安装 SQL Server 2005 两次以获得两个实例。如果可能的话,怎么做?

【问题讨论】:

    标签: sql-server-2005 delphi winapi delphi-2007


    【解决方案1】:

    回答您的问题:是的,SQL2005/SQL2008 和 SQLExpress2005/2008 可以幸福地并肩生活。 SQLExpress 安装的默认实例名称是 [机器名称]\SQLEXPRESS。但话虽如此,您应该考虑让您的客户选择使用他们已经拥有的 sql 实例,并且只有在他们选择时才安装新实例。

    我不知道是否可以静默安装 SQLExpress(很可能只要您在安装时在命令行中指定正确的属性即可)。但是我们已经向很多客户推出了它,他们在正常安装它时几乎没有问题。

    编辑:我已将其添加为编辑,因为评论不允许。

    我理解您不愿意让用户手动安装 SQL 和共享另一个实例。要解决这些问题:

    • 卸载产品应该从不自动卸载 SQL 实例,即使该 SQL 实例在安装该产品时已放置在那里。无论如何,数据库可能会被炸毁,但卸载 SQL 实例应该是一个手动过程,因为它是一个服务器产品,可能会被许多其他产品使用
    • 您可以通过使用合适的安装程序产品使您的任务变得更加容易。例如,我们使用 InstallShield。它有一个内置的 sql 浏览对话框(它是 InstallShield 的内置功能),用户可以使用它来选择他们想要用于我们的产品的 sql 实例和数据库。然后使用 XML 文件更改任务(也包含在 InstallShield 中的功能)将用户输入的详细信息插入到 web.config 文件中。通过使用这样的对话框,您可以消除很多潜在的用户错误。
    • 如果已经有一个现有的 sql 实例,请使用它。您的数据库应该对 instance 的唯一依赖是它是正确的版本(即 SQL2005,而 2008 对于 2005 数据库来说很好)。您唯一应该要求自己的实例的情况是,如果您正在处理/存储足够的数据以致需要自己的服务器,或者您依赖于未记录的功能。如果现有实例已经处于高负载状态,那么坚持在不同的服务器上建立一个新实例是可以的,但是你也避免了整个并排的情况。或者,您可以只安装到现有实例中并让客户承诺升级硬件。

    我希望这会有所帮助 - 我只是想说服您,需要一个单独的实例的原因有限,并且 99% 的时间您都可以很好地安装到现有实例中实例。拥有自己的实例很好,但实际上它给您带来的真正好处很少,尤其是在您使用强大的安装程序时。

    【讨论】:

    • 好吧,SQL Server 的安装对于我的目的来说已经足够安静了。但我认为重要的是尽量避免让用户弄乱他们的 SQL Server 实例,比如重命名它。因此,通过拥有一个具有特定产品名称的实例,我希望用户不要动手。但如果他们需要 SQL Server 用于其他产品,那么将其作为第二个实例可以避免可能的冲突。
    【解决方案2】:

    您可以使用 /Q 命令行开关以静默模式安装 SQL Server Express,或使用 /QS 命令行开关查看安装进度,无需用户输入。您可以在已安装 SQL Server 的系统上安装命名实例。

    http://msdn.microsoft.com/en-us/library/ms144259.aspx

    【讨论】:

      【解决方案3】:

      拥有自己的 SQL Server 实例非常有用的原因有很多。

      • 您可以自行决定使用哪种类型的身份验证(SQL 身份验证或 Windows 身份验证)。尽管建议使用 Windows 身份验证,但存在根本无法选择的情况。并且为其他产品使用相同实例的实例启用 SQL 身份验证存在安全风险。
      • 您可以放心地假设您的产品是已安装实例的唯一用户。因此,通过安装和卸载实例,您可以了解该实例使用的版本和数据库。无需额外检测,只要您产品的不同版本使用相同的 SQL 配置和版本。

      隔离您的分期付款(文件、注册表项、dll 和其他产品)是一种非常好的做法!

      另外,卸载 SQL Server 实例不会导致数据丢失,因为数据库的数据文件不会被删除。重新安装后,如果需要,您可以再次附加数据文件。

      话虽如此,SQL Server express 可以安装在三种不同的交互模式中:

      • 完整的用户界面,包括接受 SQL 许可协议
      • 静默,但有详细的进度 UI
      • 静默,没有任何进度 UI(并且抑制错误!)

      详细安装说明见http://msdn.microsoft.com/en-us/library/ms144259(SQL.90).aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 2014-03-21
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多