3

我用 C# 开发了一个使用 SQL Server 数据库连接的 Windows 窗体应用程序。我在 .NET Framework 4.0 和 SQL Server 2008 R2 中开发了它。我的应用程序正在使用位于应用程序根目录中的本地数据库,名为AG.mdf.

这是我的连接字符串:

Data Source=.;AttachDbFilename=|DataDirectory|\\AG.mdf;Integrated     Security=True;User Instance=True 

我通过在 Visual Studio 安装程序模板中添加安装项目作为我的应用程序中的新项目来创建安装程序。我构建了安装项目,它为我创建了安装程序。我在我的用户系统上部署了应用程序,应用程序最初启动但突然弹出错误

您的应用程序中发生了未处理的异常。如果单击继续,应用程序将忽略此消息并尝试继续。如果单击退出,应用程序将立即关闭。

建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)

PS:我也在我的用户系统上安装了 .NET Framework 4.0 和 SQL Server Compact Edition!

我应该退出编程吗:'(

4

3 回答 3

2

我认为您可能会混淆 Express Edition 和 Compact Edition;他们真的很不一样。

Compact Edition 采用SDF数据库文件,并且是嵌入式数据库,而不是单独的服务器。我认为它根本不能直接与 MDF 一起使用——尽管您可以将MDF 导出到 SDF

SQLCE 不知道用户实例、集成安全性或数据库附件。我认为您需要直接在数据源部分中的 SDF 文件的路径,但它需要SDF,而不是 MDF。

所以基本上,看起来您正在安装 Compact Edition,但随后使用连接字符串和数据文件进行完整/快速版,这不太可能工作。

于 2013-05-19T08:26:56.760 回答
1

非常感谢大家的帮助。我已经自己解决了这个问题。我唯一关心的是在客户端机器上安装 SQL Server,但后来我意识到我必须在客户端系统上安装数据库管理工具(SQL Server)才能使我的应用程序运行。
因此,我在客户端机器上安装了 SQL Server Express 并稍微更改了我的 QueryString,如下所示

数据源=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\AG.mdf;Database=AG;Integrated Security=True;User Instance=True;Trusted_Connection=Yes

此外,我还在包含我部署的应用程序的文件夹上将完全控制权限授予允许,以便我的应用程序中的 Dot Net Framework 可以访问已部署的 .mdf 数据库
快乐编码!:)

于 2013-05-20T22:23:19.780 回答
0

“|DataDirectory|\AG.mdf” 表示它需要在数据目录中查找数据库,而不是在应用程序的根文件夹中。

如何设置 DataDirectory 的小例子:

AppDomain.CurrentDomain.SetData("DataDirectory", AppDomain.CurrentDomain.BaseDirectory + "DB");
于 2013-05-19T09:15:25.960 回答