我使用Visual Basic 2010和SSMS 2012创建了一个软件,我希望部署它。这里的问题是我应该如何去做呢?我知道我可以创建一个可执行文件.exe,这已经是VS2010的一件好事了,我也认为在安装主安装程序之前安装SSMS-2012也是一件好事。此外,数据库的脚本将被生成,然后在客户端的计算机上运行,这使得数据库能够被附加。然而,这里的问题是,如果我当前在Visual Basic中硬编码数据库文件(.mdf)的目录,我的连接字符串是这样的:
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;当SSMS 2012安装在任何计算机上时,服务器(基于计算机的名称)可能会在所有计算机中有所不同。那么这能行得通吗?或者还有其他选择吗?
附言:我是个初学者,所以请对我手下留情:)
发布于 2014-03-10 13:19:33
如果您的问题只出在另一台pc上的计算机名称上,那么尝试将其连接到您的myServerAddress变量上。使用
My.Computer.Name 获取目标计算机的名称。
我想This也是一个很好的链接,虽然它是一个Access数据库,但使用了相同的概念(使用DataDirectory)。
发布于 2014-03-10 16:28:03
我不建议对连接字符串进行硬编码,因为这会将您的应用程序绑定到非常特定的部署场景。如果客户想要使用其现有的SQL Server实例,该怎么办?如果客户为SQL Server Express安装创建一个命名实例(例如,SERVERNAME\SQLEXPRESS),该怎么办?迟早你会改变你的代码来反映不同的情况,你会做同样的事情,你现在已经可以做了。
在.NET中,您可以将连接字符串存储在应用程序配置文件中。它被命名为Exe文件,但具有.config扩展名(例如MyExeName.exe.config)。在Visual Studio中,如果项目中还不存在文件(“应用程序配置文件”,app.config),您需要做的就是将其添加到项目中。在构建时,它将重命名为Exe-name加上.config。有关详细信息,请参阅此link。
对于您的场景,您应该有一个如下所示的配置文件。它通过使用“”引用本地计算机。作为服务器名称。因此,如果这是您的默认场景,则不必在部署后进行更改:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="MyConnection"
connectionString="Data Source=.;Initial Catalog=myDatabase;Integrated Security=SSPI"/>
</connectionStrings>
</configuration>在代码中,可以使用ConfigurationManager类访问连接字符串(可能需要添加对System.Configuration程序集的引用)。您可以在创建连接时使用获取到的连接字符串:
Dim connStr = ConfigurationManager.ConnectionStrings("MyConnection").ConnectionString
Using conn = new SqlConnection(connStr)
conn.Open()
' Use the connection
End Using总而言之:您需要在部署中添加一个默认配置文件,其中包含适用于任何服务器名称的连接字符串。如果客户希望将数据库放在不同的实例或另一台服务器上,只需更改连接字符串-但如果客户对默认配置满意,则不必这样做。正如您所看到的,这并不比硬编码更费力,但它将使您的部署更加灵活。
发布于 2014-03-16 19:05:05
我在一家提供企业解决方案的大公司工作,我们处理这件事的方式非常简单。
在此之后,您需要做的就是建立到服务器的连接,创建数据库并运行表和/或视图创建脚本。
我看到你提到了附加一个MDF文件,但我看不出你有什么理由要这样做。如果您有系统数据,您仍然可以使用相同的脚本或其他脚本插入它。
https://stackoverflow.com/questions/22288493
复制相似问题