0

进进出出搜索网络并找不到正确的信息,我们有一个使用 Delphi 7 和 BDE 连接到 SQL Server 2005 的旧设置。

现在我们计划迁移到 SQL Server 2012,它可能工作的可能性有多大?

4

3 回答 3

0

如果您使用的是 SQL Links MSSQL 驱动程序,则无法以 SQL Server 2012 为目标。我能够将 SQL 链接与比 SQL Server 2000 更新的任何东西一起使用的唯一方法是将数据库兼容性级别设置为“SQL Server 2000 (80)”。这在 SQL Server 2012 中是不可能的。此版本中可用的最早兼容级别是“SQL Server 2005 (90)”。

SQL 链接将向服务器发送无效的 SQL,例如外连接的“*=”语法。为 SQL Server 2005 及更高版本设置的数据库将不接受此语法。

于 2013-02-10T00:55:08.627 回答
0

我们一直在通过 Delphi 7 ADO 数据控制组件(例如 TAdoQuery、TAdoCommand)将 Delphi 7 与 SQL Server 2012 一起使用,没有出现重大问题。存储过程也可以正常工作,并且可以通过 ADO 命令对象 (TAdoCommand) 调用函数。

我们使用 SQL Server 2012 附带的 SQL Server Native Client 11.0 ODBC 驱动程序。Delphi 只是将其视为另一个 ODBC 数据接口。从表面上看,它看起来很像在 Delphi 7 中使用 MS Access(通过 ADO 组件和 Access OLE 驱动程序)。SQL Server 2012 的任何服务包也没有问题。(抱歉,我不记得 2012 年发布了哪些 SP,但我们没有这些 SP 的差异,我们对此进行了测试)。

大多数开发是在 Windows 7 64 位操作系统上完成的,并在相同的以及 64 位的 Windows Server 2008 和 2008R2 上执行。执行 Delphi 编译的可执行文件(显然都是 32 位)不需要特殊设置。

如果您使用 ODBC“别名”,请务必使用 32 位 ODBC DSN,而不是 64 位 ODBC DSN。64 位 ODBC 管理器是 64 位 Windows 的控制面板\管理工具中的一个 - 不要在这里使用它。在 Windows 的 SysWOW64 中使用 32 位 ODBC 管理器:C:\Windows\SysWOW64\odbcad32.exe。64 位 ODBC DSN 位于与 32 位 DSN 不同的空间中。Delphi 7 是一个 32 位应用程序,无法访问 64 位 DSN(我猜是不同的 API)。

我们可能还遇到了 SQL 语句中的注释问题。我认为行注释(“--”)不起作用,但多行注释起作用(“/ ... /”)。

请注意,虽然 BDE 由 Corel 保留(至今仍以 Paradox Runtime 的形式分发;但是,该引擎已冻结,并且在现代 Windows 操作系统中确实存在一些问题),但不需要访问 SQL Server 数据。我们直接通过 Windows ODBC API 使用 ODBC 别名(我们在 Delphi 中编写了包装器以简化此操作)。但是,您仍然可以将 BDE 用作这些 ODBC DSN 别名的接口。如果您根本不使用别名(并且在源代码中不包含对 DbTables.pas 的任何引用),则根本不需要 BDE。DbTables.pas 总是在初始化其 INTIALIZATION 块中的全局 Sessions 变量时初始化 BDE。您可以在 DbTables.pas 源代码单元的底部看到这一点。没有这个单元,BDE 就不会被初始化或使用。

另一个技巧是使用 MS Access 数据库和链接表来连接 SQL Server 和 Paradox 数据表,如果您仍然需要使用 BDE-native(即 Paradox)表。但有时 Access 和 BDE 不能很好地配合使用。

我敢肯定,迁移已经完成了很长时间,但万一其他人也在寻找相同的答案。旧版软件有一种习惯...

于 2015-09-15T22:46:12.557 回答
-1

我们已经成功地将 BDE 与 SQL Server 2008R2 结合使用。无特殊配置。

编辑:我今天在 SQL Server 2014 上也取得了初步成功。有限的测试,但到目前为止一切都很好!

格雷格

于 2014-10-27T17:16:31.617 回答