sqlcmd无法连接到Azure数据库。

5
我正在尝试使用以下命令来访问我的Azure数据库。
sqlcmd -s tcp:DBNAME HERE.database.windows.net -U USERNAME -P PASSWORD

我遇到了以下错误:
Sqlcmd: 错误: Microsoft ODBC Driver 13 for SQL Server : Named Pipes Provider: Could not open a connection to SQL Server [2]. . Sqlcmd: 错误: Microsoft ODBC Driver 13 for SQL Server : Login timeout expired. Sqlcmd: 错误: Microsoft ODBC Driver 13 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..
有人遇到过这个问题吗?我已经下载了最新版本的sqlcmd。
我需要将大量数据导入我的Azure数据库,但是在管理工具中的“导入数据”选项无法处理。这是我尝试的第一种方法。在处理了250,000行中的70,000行后,它就会停止,没有任何错误消息,这促使我尝试使用BCP SQLCMD。
保罗

抱歉,我的意思是我最初尝试使用导入/导出数据选项将数据导入到我的数据库中,但这一部分无法处理。管理工具可以连接到我的Azure数据库,因此我知道这不是防火墙问题。 - Paul
是的,刚刚完成了。 - Paul
它是Azure SQL还是在Azure中运行的SQL Server?您尝试过使用PowerShell将数据加载到其中吗? - Mike Sherrill 'Cat Recall'
这是一个托管在弹性池中的Azure SQL数据库。 - Paul
将查看PowerShell路由 - Paul
3个回答

6

您的命令有误。应该将“S”大写,并提供服务器名称,而不是数据库名称。

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

请查看文档页面以获取完整的sqlcmd语法。


不需要tcp:前缀。我想知道用户是否试图从未为TCP配置客户端库的框中运行sqlcmd。这将导致命名管道消息。 - CRAFTY DBA

1
请按照以下方式对您的Azure SQL数据库服务器名称进行ping测试:
C:\> ping myserver.database.windows.net

ping 命令应该会失败,但是它应该返回你的 SQL Azure 数据库服务器的当前 IP 地址。如果它未能返回该 IP 地址,则无法访问 Azure 服务器,原因是 DNS 解析问题。

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

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

如果telnet命令失败,请确保您的计算机防火墙或网络硬件允许流量通过上一步返回的IP,并确保TCP端口1433已打开。如果您正在企业网络中尝试此操作,请联系您的网络管理员以满足这些要求。
请注意,您可能需要通过控制面板->程序和功能->打开/关闭功能启用telnet命令。

0

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

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

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

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

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

enter image description here

在上面的图像中,我使用在线书籍上的正确开关连接到 Azure SQL 数据库。查询 sys.tables 目录返回了我期望的信息。两个具有不同名称的表。一个重复命名的表位于不同的模式下。
BCP 命令将以相同的方式工作。您甚至可能想尝试格式文件。
我想澄清一下您的陈述,即导入需要很长时间。请记住,Azure SQL 数据库是平台即服务。数据库层设置为预定的 DTU。这意味着将服务器塞满大量数据将导致最大 DTU 的受限服务器。
我会查看门户并查看是否出现这种情况。
简而言之,sqlcmd、bcp 和导入/导出向导是用于数据加载的完美工具,比您所谈论的数字要大得多。只需记住,语法是任何成功程序的关键!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接