【问题标题】:sqlcmd not connecting to Azure databasesqlcmd 未连接到 Azure 数据库
【发布时间】:2018-05-04 03:05:23
【问题描述】:

我正在尝试使用以下命令在 Azure 中访问我的数据库

sqlcmd -s tcp:DBNAME HERE.database.windows.net -U USERNAME -P PASSWORD

我得到了错误

Sqlcmd:错误:Microsoft ODBC Driver 13 for SQL Server:命名管道 提供者:无法打开与 SQL Server [2] 的连接。 . sqlcmd: 错误:Microsoft ODBC Driver 13 for SQL Server:登录超时 已到期。 Sqlcmd:错误:Microsoft ODBC Driver 13 for SQL Server:A 发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器 无障碍。检查实例名称是否正确以及 SQL Server 是否正确 配置为允许远程连接。有关详细信息,请参阅 SQL 服务器在线图书..

有人吃过这个吗?我已经下载了最新版的sqlcmd

我需要将大量数据导入我的 Azure 数据库,但由于 Management Studio 中的“导入数据”选项无法应付,我的选项已用尽。这是我尝试的第一种方法。在处理了 250000 行中的 70000 行后,它只是停止而没有错误消息,这就是导致我尝试使用 BCP SQLCMD 的原因

保罗

【问题讨论】:

  • 对不起,我的意思是我第一次尝试使用导入/导出数据选项将数据导入我的数据库中,这是没有处理的位。 Management Studio 可以连接到我的 Azure 数据库,所以我知道这不是防火墙问题
  • 是的,刚刚完成了
  • 是 Azure SQL,还是在 Azure 中运行的 SQL Server?你试过use PowerShell to load data进去吗?
  • 它是一个托管在弹性池中的 Azure SQL 数据库
  • 会看power shell路由

标签: azure azure-sql-database sqlcmd


【解决方案1】:

您的命令不正确。 “S”应大写,您应提供服务器名称,而不是数据库名称。

sqlcmd -S tcp:myServer.database.windows.net -d database -U username -P password

有关sqlcmd 的完整语法,请参阅documentation page

【讨论】:

  • 不需要 tcp: 前缀。我想知道用户是否试图从没有为 TCP 配置客户端库的框中运行 sqlcmd。这将导致命名管道消息。
【解决方案2】:

请对您的 Azure SQL 数据库服务器的名称进行 ping 操作,如下所示:

C:\> ping myserver.database.windows.net

ping 命令应该会失败,但应该会返回 SQL Azure 数据库服务器的当前 IP。如果它无法返回该 IP,则由于 DNS 解析问题,您无法访问 Azure 服务器。

如果 ping 命令成功返回 IP 地址,则尝试 telnet 您的 SQL Azure 数据库服务器,如下所示。

C:\> telnet myserver.database.windows.net 1433

如果 telnet 命令失败,请确保您的计算机防火墙或网络硬件允许到上一步返回的 IP 的流量,并确保 TCP 端口 1433 已打开。如果您是从公司网络尝试此操作,请联系您的网络管理员了解此要求。

请注意,您可能需要通过控制面板 -> 程序和功能 -> 打开/关闭功能来启用 telnet 命令。

【讨论】:

    【解决方案3】:

    我只想指出,BCP 和 sqlcmd 是两个不同的工具。

    BCP 是批量复制命令。后者是用于查询的命令行工具。

    如果您遇到命名管道问题,您可能没有配置客户端和/或服务器库。

    请到 SQL Server 配置管理器检查设置。

    默认情况下,Azure SQL 数据库使用 TCP,您无需在命令行中告诉它。

    在上图中,我使用在线书籍中的正确开关连接到 Azure SQL 数据库。查询 sys.tables 目录会返回我期望的信息。两个名称不同的表。不同架构下的一个重复命名表。

    BCP 命令的工作方式相同。您甚至可能想尝试格式化文件。

    我想澄清您关于导入需要很长时间的说法。请记住,Azure SQL 数据库是平台即服务。数据库层设置为预定的 DTU。这意味着用大量数据填充服务器将导致 MAX DTU 的服务器受到限制。

    我会查看门户网站,看看是否是您的情况。

    简而言之,sqlcmd、bcp 和导入/导出向导是用于加载比您所说的数字大得多的数据的完美工具。请记住,语法是任何成功程序的关键!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      相关资源
      最近更新 更多