2012-04-28 57 views
2

我已经创建了电影票预订系统,并且我需要将它部署到其他某台机器上。我面临着数据库的问题。当我在另一台机器上部署我的软件时,它已经安装,但由于没有SQL服务器,它不起作用。所以,我在那里安装了SQL服务器。但仍然显示我在SqlConnection中给出的服务器名称参数有问题。我在那里做了改变。现在我又遇到了数据绑定的问题。我需要在其他机器上部署我的软件以及数据库

我厌倦了一次又一次地改变一切。有没有简单而有效的解决方案?它非常紧急。

帮助我实现以下目标:

  • 提供数据库与项目一起当我部署它。

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

  • 我不想一次又一次地改变数据库服务器的名称,以保证每次连接。

+2

如果你正在创建一个电影预订系统,你不应该在某个地方(例如在服务器上)只有一个SQL Server实例,并让所有客户端应用程序通过网络指向它吗?没有必要在每台机器上安装SQL Server。 – Polynomial 2012-04-28 10:34:37

+0

您是否检查过新安装的计算机上正在运行的SQL服务? – 2012-04-28 10:51:58

+0

它从现在开始获取服务器/实例名称?配置文件是通常的方式。数据库所在的代码无关紧要,除非知道它在哪里。这就是说,有一些潜在的其他问题部署明智与你在做什么。 – 2012-04-28 10:54:38

回答

0
  • 提供数据库与项目一起当我部署它。

对于数据库和GUI都很难“一键式”安装。但是,您可以使用版本控制或时间戳部署项目来将这些项目保存在一起。源代码控制这些项目能够回滚并根据需要调出您需要的版本。有一些方法可以将版本号或时间戳与GUI组件相关联,以将部署作为一个单元进行关联。例如,您可以将您的更改数据库脚本(FooTable v100,v101,v102)的版本或时间戳记打印到源代码管理中。将各种关联存储在某种类型的配置数据库中。在我的工作中,我们使用SharePoint列表逐项列表部署,并使用SharePoint列表项引用来一起引用特定更改的所有不同项目。由于所有东西都是受控的,因此如果需要,我可以轻松找出并检索部署项目以进行特定更改。

  • 如果我附上我的另一台机器上的数据库,我想用我现有的
    数据绑定。

  • 我不想一次又一次地更改数据库服务器名称,每连接 我所做的。

您可以使用使用诸如

数据源= myServerAddress可信连接的连接字符串;初始目录= MyDatabase的;集成安全性= SSPI;

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

所以在开发中,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脚本改变变量值需要根据您正在部署的环境:

如果@@ SERVER = 'somedevdbserver'

SET:linkserver = 'DevDBServer'

如果@@服务器= 'sometestserver'

SET:linkserver = 'testDBServer'

等等

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

相关问题