【问题标题】:Link Delphi to SQL Server将 Delphi 链接到 SQL Server
【发布时间】:2013-05-14 11:46:40
【问题描述】:

我在 C 盘本地使用 Delphi XE4 和 SQL server express 12。我可以通过 ADO comp 将 Delphi 链接到 Access DB。问题是当我尝试链接 SQL 服务器数据库时 - 它看不到我的服务器/数据库。我不确定我应该如何指定我的服务器名称(USER-PC\SQLEXPRESS - SQLserver 创建的名称)或我的数据库名称(C:\Program Files(x86)\Microsoft SQL Server\MSSQL11.SQLExpress\MSSQL\DATA\测试数据库.Mdf)。没有使用密码。我尝试通过 ADoTable(SQL SERVER Native Client 11.0 以及 Microsoft OLE DB Provider for SQL Server)和 TSQLConnection。 (我最近一直在使用 MS Access - 与外部数据库连接脱节......)

【问题讨论】:

  • Delphi 的哪个版本?只有更高版本支持客户端/服务器数据库。
  • 这是版本,您的问题中已明确说明。但我想知道您使用的是哪个版本
  • 一个有效的连接字符串应该是:Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=YOURDB;Data Source=YOURSERVER\YourInstance;
  • 另外,为了将来参考,使用与问题完全无关的标签是非常糟糕的形式。这只会让对这些标签感兴趣的人感到困惑。
  • 好的,我是新手,我不确定我做错了什么@David? Embarcadero® Delphi® XE4 版本 18.0.4854.59655。不确定在哪里查找版本?

标签: sql-server delphi delphi-xe4


【解决方案1】:

您需要以某种方式提供服务器信息,您可以使用 ConnectionString 来建立连接。连接字符串如下所示:

ConnString =
  'Provider=SQLOLEDB.1;Persist Security Info=False;' +
  'User ID=%s;Password=%s;Data Source=%s;Use Procedure for Prepare=1;' +
  'Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;'+
  'Tag with column collation when possible=False';

看看this example uing ADOQuery。

并查看文档:Connecting to Databases - Overview

【讨论】:

  • 谢谢你,@CloudyMarble。我不知道如何处理 SQL 服务器,但 Delphi 似乎没有“看到”我的服务器。也许我的 SQL 服务器设置不正确?
  • SQL 服务器应该可以被‘USER-PC\SQLEXPRESS’或者‘(local)\SQLEXPRESS’访问。如果不是,那么 SQL Server 可能运行不正确或配置不正确。
【解决方案2】:

如果您右键单击 TADOConnection 组件,您将可以选择编辑连接字符串。这将打开一个对话框,带有一个标记为 Build... 的按钮

单击它会打开一个向导。选择“Microsoft OLE DB Provider for SQL Server”作为提供程序,然后单击下一步。现在为您提供了当前可见的所有 SQL Server 的列表。如果您的不在此列表中,则它不可用。 SQL Server 服务是否已启动?

如果它在列表中,则按照向导建立一个有效的连接字符串。

【讨论】:

  • 我已经在上面的 Provider 以及 SQL Server Native Client 11.0 上试过这个,但是没有出现服务器列表。我尝试打开/关闭 SQL 服务器,但没有成功。我不确定如何让 Delphi “看到” SQL-server。
  • 在我看来问题出在您的 SQL Server 上,而不是 Delphi,因为如果我使用“构建连接字符串”向导,我可以看到我们组织内列出了几十个 SQL Server 实例。
  • @user2378627 您可能需要使用配置管理器启用 tcp/ip 端口 1433。 docs.microsoft.com/en-us/sql/database-engine/configure-windows/…
【解决方案3】:

实际上,您必须连接到 MSSQL Express,而不考虑位数 (32/64)。您的 SQL Server Express 已启用 TCP/IP 和/或命名管道连接,而不仅仅是共享内存?

要检查,请启动 SQL Server 配置管理器(不知道它是否在 2012 年更改,但它是 2008/2008r2 上的名称)并在 SQL Server 网络配置/协议下查看 项目(在 64 位系统上会有 2 个,如果我的记忆没有让我失望 - 我的机器是 32 位,请检查两者)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多