我在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安装程序模板中添加Setup Project作为我的应用程序中的新项目来创建安装程序。我构建了安装项目,它为我创建了安装程序。我在我的用户系统上部署了应用程序,应用程序最初启动但后来突然弹出错误
您的应用程序中发生了未处理的异常。如果单击“继续”,应用程序将忽略此消息并尝试继续。如果单击退出,应用程序将立即关闭。
建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
P.S:我也在我的用户系统上安装了.NET Framework 4.0和SQL Server Compact Edition!
我应该退出编程:'(
答案 0 :(得分:2)
我认为你可能会对Express Edition和Compact Edition感到困惑;他们真的很不一样。
Compact Edition采用 SDF 数据库文件,是一个嵌入式数据库,而不是一个单独的服务器。我认为它根本不能直接与MDF一起使用 - 你可能会export an MDF to an SDF。
SQLCE不了解用户实例,集成安全性或数据库附件。我认为你需要直接在数据源部分找到SDF文件的路径,但它需要是 SDF,而不是MDF。
所以基本上,看起来你正在安装Compact Edition,但后来使用连接字符串和数据文件进行完整/快速版本,这不太可行。
答案 1 :(得分: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数据库
快乐的编码! :)
答案 2 :(得分:0)
“| DataDirectory | \ AG.mdf”表示需要查看数据目录中的数据库,但不能查看应用程序的根文件夹中的数据库。
如何设置DataDirectory的小例子:
AppDomain.CurrentDomain.SetData("DataDirectory", AppDomain.CurrentDomain.BaseDirectory + "DB");