使用具有存储过程的本地数据库的 C# 应用程序
本文关键字:数据库 应用程序 存储过程 | 更新日期: 2023-09-27 18:31:06
我正在尝试开发一个简单的使用数据库的C#应用程序。我目前正在使用 MS Server 2008,但我发现了一个可移植性问题,因为在不同的计算机上运行该应用程序需要安装 MS Server。此外,我的数据库使用存储过程。
我可以使用哪些其他数据库类型来克服此问题(注意,它必须使用存储过程)?
如果我要使用 MS Server 2008,假设它已安装在每台 PC 上,如何复制我的 .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'
大多数"认证"数据库引擎都要求您实际安装引擎。
大多数"认证"数据库引擎都支持使用存储过程。
为了在更多计算机上拥有.mdf文件,您可以简单地复制它,然后使用 sql 管理工作室将文件附加到引擎,但如果您计划在许多地方分发应用程序,这不是一个理想的解决方案,理想的解决方案是创建一个安装包并修复它从安装中自动完成并在卸载时撤消。
恕我直言:您坚持使用非中心化解决方案的存储过程 - 请注意这是一种相当罕见的策略 - 它有错误路径的味道。但我不能确定,除非你提供更多信息。
实际上有两种通用设计可以做类似您所描述的事情。 要么有一个集中式数据库,应用程序的所有副本(和/或多个应用程序)都可以访问,要么创建一个包含数据库的安装包(通常只能由单个应用程序访问)。
就个人而言,如果您不想或不能使用集中式数据库解决方案,我建议您改变您对存储过程的理念并研究 SQL Server Compact。 我发现这篇文章讨论了SQL Server Compact没有sprocs的原因,我认为这对你很有用,即使你决定你真的需要它们。
也就是说,如果您需要使用应用程序安装数据库,则可以在Visual Studio中创建安装包,也可以考虑使用WiX。
您可以分离数据库,复制并将 mdf 文件附加到目标数据库上。