为什么应用程序会关心底层数据库文件的存储位置?

我最近在处理存储MSSQL .ldf和.mdf文件错误位置的应用程序引起的问题。 SQL Server是2005年。

该应用程序正在查找\ server \ app root \ database \ data和\ server \ app root \ database \ log中的文件,但文件位于\ server \ mssql \ data和\ server \ mssql \ logs中。 我将数据库文件移动到应用程序期待的位置,这解决了问题。

我不明白为什么应用程序需要知道这些文件在哪里,它应该只关心ODBC名称或OLE访问(主机名,凭证)。 有谁知道为什么应用程序需要这些信息?

SQL Express(仅限Express)允许使用名为“用户实例”的function,在该function中,您可以使用SqlClient托pipe提供程序在应用程序的连接string中指定.mdf文件的位置,并将其作为数据库附加到服务器上。 这有一些限制:

  • 您只能使用本地连接(即,SQL Express必须是本地到Web服务器)
  • 没有分布式查询
  • 没有复制

当使用此function时,服务器pipe理员不会在服务器上创build数据库。 当连接到应用程序时,SQL将附加.mdf文件。

最常见的是一些(无脑的和/或便宜的)networking主机,以及当SQL Express用作本地用户应用程序的数据库引擎时。

从Web应用程序的angular度来看,它使得您的数据库相当便携,并且当您无法通过主机控制面板或其他方式运行数据库的备份时,可以提供替代scheme。 否则,我发现它最大的用处是在本地的应用程序领域。

除非我们谈论的软件无论出于何种原因需要直接访问这些文件,否则没有理由要知道这些文件。 即使如此,对于这样的细节做出假设或者有不切实际的期望,也只是简单的糟糕和不合理的编程。 如果软件无法自行定位,软件至less应该询问文件的位置。 我当然同意Sim的观点,程序员肯定需要和Cluestick做一些改变。 你真的不知道应用程序还有什么问题。