2

我正在使用 sql server 2005 和 Visual Studio 2008 构建 C# windows 应用
程序。在客户端计算机上部署应用程序。我按这个顺序做这个

  1. 我使用在我的应用程序中创建的相同用户/密码(即 sa/密码)安装 sql server 2005。
  2. 我运行我的 Windows 应用程序 msi 文件。它将我的数据库安装在 sql server 2005 中。

当我尝试运行应用程序时,由于客户端计算机上的机器名称和 sql 服务器实例名称不同,我失败了。我在连接字符串中遇到错误。我需要一种方法来提取目标计算机名和 sql server 实例,并在部署期间将其保存在我的应用程序设置中(在我的 c# 代码中使用,以便我可以在运行时创建连接字符串。)

为了解决这个问题,我正在我的客户端计算机上安装 Visual Studio 并编辑源代码以更改机器名称和 sql 服务器实例。然后我的 Windows 应用程序运行。我不想以这种方式解决我的问题,而是需要一种方法,我可以在部署时设置我的参数,或者让你来建议更好的方法。

我会请求你帮助我。

4

3 回答 3

0

谷歌会给你很多选择。您在复制数据库时是否遵循了正确的步骤。

按照这些链接http://blogs.msdn.com/b/sreekarm/archive/2009/09/11/move-a-database-from-one-server-to-another-server-in-sql-server-2008 .aspx

这将回答你的DBA Stack Exchange

还发布您收到的确切错误消息。找出问题会很有用

于 2012-12-21T08:54:19.337 回答
0

使用 SQL CE 将需要大量返工。

完整的安装顺序是:

  1. 安装 Windows Installer 3.1(如果未安装)
  2. 安装 .Net 2.0(如果未安装)
  3. 检查是否尚未安装 SQL:

HKLM "SOFTWARE\Microsoft\Microsoft SQL Server\${instance_name}\MSSQLServer\CurrentVersion" "CurrentVersion"

然后你需要安装 SQL Server:

${installer_path}\SQLEXPR.exe -q /norebootchk /qn reboot=ReallySuppress addlocal=all INSTANCENAME=${instance_name} SAPWD=${password} SECURITYMODE=SQL SQLBROWSERAUTOSTART=1 SQLAUTOSTART=1 AGTAUTOSTART=1 ASAUTOSTART=0 RSAUTOSTART=0 DISABLENETWORKPROTOCOLS=0 ERRORREPORTING=1 SQMREPORTING=0 ENABLERANU=0 ADDUSERASADMIN=1

要连接到 SQL Server 实例,请使用您的数据链接属性对话框。您需要向用户明确说明如何连接到实例。例如

在此处输入图像描述

如果您使用 .\Instance_Name 语法,其中“.” 点表示应该解决问题的客户端 PC 名称。也在你的连接字符串中使用它。

于 2012-12-21T08:54:32.100 回答
0

因此,如果我对您的理解正确,您已经在源代码中硬编码了连接字符串。当然,您已经发现这确实是一个坏主意,但要付出您的代价。

您需要将该连接字符串保存在 app.config 文件中。这样,当您将应用程序安装到客户时,您只需更改配置文件,您的代码就可以使用了。

在 app.config 中插入连接字符串:

  • 右键单击您的项目并选择Properties,然后转到该 Settings页面。这将为您的项目创建一个settings.settings文件,并为您的属性打开一个 GUI 编辑器。
  • 现在在列名中插入一个字符串(例如 testConnection
  • 从类型列中选择ConnectionString类型
  • 在值列中插入对您的开发机器有效的连接字符串

现在,如果您打开 app.config,您会注意到一个名为的新部分ConnectionStrings,如下所示:

 <connectionStrings>
    <add name="ProjectName.Properties.Settings.testConnection" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\mytemp.mdb;User Id=admin;Password=;" />
  </connectionStrings>

现在是时候一劳永逸地修复您的代码了。
在每个有硬编码连接字符串的地方,用类似这样的东西替换该代码

 string constring = ConfigurationManager.ConnectionStrings["ProjectName.Properties.Settings.testConnection].ConnectionString;

当我们在这里时,请检查是否可以使用SqlServer Express 2012 的 LocalDB 版本来消除安装 SqlServer 的需要。

于 2012-12-21T12:27:07.110 回答