2010-08-29 77 views
3

在我的开发计算机上,我有MS SQL Server/Visual Studio 2005.我的程序可以正确连接到我的本地数据库并使用它。但是我的另一台计算机(非dev)没有MS SQL Server/Visual Studio 2005,也没有连接到数据库。它出现以下内容:c#连接到本地MDF DB文件

“建立到服务器的连接时发生错误当连接到SQL Server 2005时,此故障可能是由于在默认设置下SQL Server不允许远程连接......“(错误:26)。

这是否意味着我必须在我的非dev计算机上安装SQL Server 2005?有没有其他方法?

我的连接字符串是:

“数据源= \ SQLEXPRESS; AttachDbFilename = \”” + Directory.GetCurrentDirectory() + “\ DB.mdf \”;集成安全性= TRUE;用户实例=真“;

回答

1

连接字符串告诉SQL Server本机客户端ADO.NET提供尝试连接到名为SQLEXPRESS将管理存储在文件DB.mdf数据库SQL Server实例。由于您的客户端计算机没有安装Sql Server Express,因此无法找到要连接的数据库。

你将需要:

  • 在客户端计算机上安装SQL Server,有部署数据库。
  • 切换到Sql Server精简版(SqlCE - 嵌入式数据库)并重新架构您的应用程序以使用可移植数据库文件(使用SqlCE)。使用
  • 沟一个强大的数据库引擎和完全切换到ADO.NET数据集,保存/加载数据集的内容的XML文件(经由中WriteXML()的ReadXml())。如果您正在处理的数据量在大小上相当有限,那么DataSets是维护完整性(通过强类型和定义良好的模式)和可移植性的好方法。
1

是的,你确实需要MS-SQL(Express)在目标计算机上可用。本地安装或连接到服务器。

将SQl Express包含在Setup.exe中并不难(请参阅PreRequisites)。

另一种方法是使用SQL-CE或Sqlite或(甚至)MS-Access。他们是'嵌入'的数据库引擎,所以你只需要分发DLL。

+0

这看起来很有前途,谢谢! – Exegesis 2010-08-29 22:17:47

+0

我转换为SQLCE ...现在Visual Studio将System.Data.SqlServeCe.dll添加到输出路径。删除这个dll显然会产生一个异常。但是,当我将输出与DLL文件复制到非开发计算机时,它会在没有DLL的情况下运行时吐出相同的错误。任何人都知道为什么这会发生N? – Exegesis 2010-08-30 01:56:30

+0

SqlServerCe dll通常安装在GAC中。不建议单独使用它,但是:将DLL复制到源文件夹(而不是\ bin \)中,添加对_that_ dll的引用并确保设置了CopyLocal。尽管它可能依赖于其他DLL,但您需要在Fx版本上进行严格的(呃)匹配。 – 2010-09-01 21:19:05

2

如果你想在其他PC /服务器上运行它,你还需要安装SQL Server(需要附加你的.mdf)或SQL Server Express。

另一个诀窍是更改连接字符串,以便它指向数据库运行所在的另一台PC /服务器。