0

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

为了克服这个问题,我可以使用哪些其他数据库类型(注意它必须使用存储过程)?

如果我要使用 MS Server 2008,假设它安装在每台电脑上,我如何复制我的 .mdf 文件以便访问?(即在应用程序加载时安装它?)

更新

这个网站,我找到了以下连接字符串:

在连接到本地 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'
4

3 回答 3

1

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

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

恕我直言:您坚持使用去中心化解决方案的存储过程 - 请注意这是一种相当罕见的策略 - 它有错误路径的味道。但除非您提供更多信息,否则我无法确定。

于 2012-04-15T14:50:17.050 回答
1

确实有两种通用设计可以执行您所描述的操作。要么拥有一个应用程序(和/或多个应用程序)的所有副本都可以访问的集中式数据库,要么创建一个包含数据库的完整安装包(通常只能由单个应用程序访问)。

就个人而言,如果您不想或不能使用集中式数据库解决方案,我建议您改变您对存储过程的理念并研究SQL Server Compact。我发现这篇文章讨论了 SQL Server Compact 没有存储过程的原因,我认为这对你很有用,即使你决定你真的需要它们。

也就是说,如果你需要在你的应用程序中安装一个数据库,你可以在 Visual Studio 中创建一个安装包,你也可以考虑使用WiX

于 2012-04-15T15:33:20.660 回答
0

您可以分离数据库,复制并附加目标数据库上的 mdf 文件。

于 2012-04-15T14:34:37.797 回答