2012-04-15 79 views
0

我想开发一个简单的使用数据库的C#应用​​程序。我目前使用MS Server 2008,但我发现了一个可移植性问题,因为在不同计算机上运行应用程序需要安装MS Server。另外,我的数据库使用存储过程。使用存储过程的本地数据库的C#应用​​程序

我可以使用哪些其他数据库类型来克服此问题(它必须使用存储过程)?

如果我要使用MS Server 2008,假设它安装在每台PC上,我如何复制我的.mdf文件才能访问? (?即在应用负载安装)

UPDATE

this website,我发现下面的连接字符串:

装上连接一个数据库文件到本地SQL Server Express实例...

Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes; 

我推测这会从我的文件夹复制.mdf文件。 因此,我使用了下面的连接字符串,但没有成功......

Server=.\SQLExpress;AttachDbFilename=...... database path.... ;Database=TrieDB.mdf; Trusted_Connection=Yes; 

Directory lookup for the file "... database path... " failed with the operating system error 5(Access is denied.). 
Cannot attach the file '... database path...' as database 'TrieDB.mdf' 
+0

为什么你没有你的应用程序连接到一个集中的sql服务器,而不是在每个工作站上安装sql服务器? – 2012-04-15 14:29:09

+0

为什么你需要本地数据库的存储过程?只是好奇 - 这听起来不像一个有利的设计。 – tsells 2012-04-15 15:06:59

+0

另外,多么关键 - 如何*真正*关键 - 是使用存储过程的应用程序 - 我明白你现在拥有它们。此外,此多用户软件或每个应用程序实例的单个用户? – Murph 2012-04-15 15:18:03

回答

0

您可以分离数据库,拷贝过来附加到目标数据库的MDF文件。

+0

感谢您的答复队友..和想法如何我可以实现这一点?与连接字符串有关吗? – user1317277 2012-04-15 15:27:58

1

大多数“认证”数据库引擎要求您实际安装引擎。
大多数“认证”数据库引擎都可以使用存储过程。

为了在更多机器上拥有.mdf文件,您可以简单地复制它,然后使用sql管理工作室将文件附加到引擎上,但如果您计划将应用程序分发到该引擎,那么这不是理想的解决方案很多地方,理想的解决方案是创建一个安装包并修复它在安装时自动完成并在卸载时自动撤消。

恕我直言:你坚持了去centeralized解决存储过程 - 这样做的通知,这是一个相当罕见的战术 - 它有一个错误的道路的味道.. 但我不能肯定,除非你提供一些更多的信息。

+0

该应用程序的目标是作为后缀特里结构,其中文档在数据库中编入索引并在需要时进行搜索。为了提高性能并避免为每个待索引(或搜索)的信件创建无数连接,我选择使用存储过程并减少连接数(即提高性能)。 – user1317277 2012-04-15 15:26:58

+0

好吧,我分享你的悲伤:) 我可以理解为什么你需要很多数据库,但不知道为什么你需要存储过程。如果你打开一个调用STP的连接或者执行一个动态创建的sql脚本来完成任务,我认为这不重要。在这两种情况下,您都使用相同数量的连接。不使用STP的好处可能很明显,所以我会跳过它,实体框架可以通过将您的sql需求的权力直接带到代码中,让您的生活更轻松。 – 2012-04-15 16:12:50

1

真的有两种通用设计可以完成您所描述的内容。要么有一个集中的数据库,可以访问应用程序(和/或多个应用程序)的所有副本,也可以创建一个完整的数据库安装包(通常只能由单个应用程序访问)。个人而言,如果您不想或不可以使用集中式数据库解决方案,我会建议您改变有关存储过程的理念并查看SQL Server Compact。我发现this article讨论了SQL Server Compact没有sprocs的原因,我认为这对你是有用的,即使你决定真的需要它们。这就是说,如果你需要在你的应用程序中安装数据库,你可以在Visual Studio中创建一个setup package,你也可以使用WiX来查看。

+0

感谢您的回复和建议..最初我使用MS SQL CE,但正如你所说,他们不使用sprocs ..由于所需的最大速度,然后我选择MS SQL Server与sprocs,并获得的速度是大幅度地:/如果没有找到解决方案,我会保留安装包方法作为替代方案。非常感谢您的建议。 – user1317277 2012-04-15 15:40:50

+0

@ user1317277,我猜你看到从完全安装的rdbms比从sprocs看到更多的性能收益...但是无论哪种方式,从用户的角度来看,获取所需的所有设置的最简单方法是使用某种形式安装包。我认为你不会摆脱这种情况。 – chezy525 2012-04-15 16:07:25

相关问题