我需要将软件与数据库一起部署在其他计算机上

问题描述 投票:2回答:1

我已经创建了电影票预订系统,我需要将其部署在其他计算机上。我面临数据库问题。当我在另一台计算机上部署软件时,就安装了该软件,但是由于缺少SQL Server,该软件无法正常工作。因此,我在那里安装了SQL Server。但是它仍然显示了我在SqlConnection中提供的服务器名称参数的问题。我在那边做了更改。现在我再次遇到数据绑定问题。

我必须一次又一次地更改所有内容。是否有任何简单有效的解决方案?

帮助我实现以下目标:

  • 我在部署数据库时随项目一起提供数据库。

  • 如果我将数据库附加到其他计算机上,我想使用现有的数据绑定。

  • 我不想为我建立的每个连接一次又一次更改数据库服务器名称。

sql-server database-connection
1个回答
0
投票
  • 在部署数据库时随项目一起提供数据库。

对于数据库和GUI而言,“一键式”安装都很困难。但是,您可以使用版本控制或为部署项目添加时间戳,以将类似项目保持在一起。源代码控制这些项目,以便能够回滚并按需提供所需的版本。有一些方法可以将版本号或时间戳与GUI组件绑定在一起,以将一个部署关联为一个单元。

例如,您可以对更改数据库脚本(FooTable v100,v101,v102)进行版本控制或标记时间戳,然后将其检入源代码管理。将各种关联存储在某种类型的配置数据库中。在我的工作中,我们使用SharePoint列表对部署进行逐项列出,并使用SharePoint列表项引用来共同引用特定更改的所有不同项。由于所有内容均受源代码控制,因此我可以根据需要轻松找出并检索针对特定更改的部署项目。

  • 如果我将数据库附加到其他计算机上,我想使用现有的数据库数据绑定。

  • 我不想一次又一次地更改数据库服务器名称我建立的连接。

您可以使用使用受信任连接的连接字符串,例如

数据源= myServerAddress;初始目录= myDataBase;集成安全性= SSPI;

因此您无需为每个环境嵌入不同的用户名和密码。您可以将服务器和数据库名称存储在每个环境服务器上的machine.config或web.config中。

所以在dev上,ConnectionString可能是

数据源= myDevServer;初始目录= myDevDataBase;集成安全性= SSPI;

测试中:

数据源= myTestServer;初始目录= myTestDataBase;集成安全性= SSPI;

如果将它们存储在服务器上的配置文件中,则不需要在软件包中对其进行更改。

如果您确实需要将该配置与软件包一起存储,则应使用技术根据要部署到的环境动态更改设置。例如,您可以使用环境变量来确定您所处的环境,以便知道运行哪个代码来动态更改配置。或者,您可以使用XSLT来更改XML配置,而不是代码。您还可以在MSI中将自定义操作设置为在安装/卸载时运行。您可以在此处添加代码以根据部署需要更改配置。

同样,数据库脚本本身可以根据您要部署的环境进行更改。您可以使用SQLCMD变量动态更改SQL代码(特别是在第3部分和第4部分命名引用中的数据库和服务器名称,即如果替换devlinkserver和devdb,devlinkserver.devdb.dbo.foo可以更改为testlnkserver.testdb.dbo.foo。与SQLCML变量)。使用SQLCMDs脚本,根据您要部署到的环境根据需要更改变量值:

IF @@ SERVER ='somedevdbserver'

SET:linkserver ='DevDBServer'

IF @@ SERVER ='sometestserver'

SET:linkserver ='testDBServer'

等...

总而言之,在所有环境中都应保持尽可能多的配置。使用上述各种技术来根据需要动态更改配置,以使每个环境中需要不同的部分成为可能。

© www.soinside.com 2019 - 2024. All rights reserved.