使用 sqlcmd 连接到 Synapse SQL

在 Synapse SQL 中,可以使用 sqlcmd 命令行实用程序连接并查询无服务器 SQL 池和专用 SQL 池。

1.连接

若要开始使用 sqlcmd,请打开命令提示符并输入 sqlcmd,后跟 Synapse SQL 数据库的连接字符串。 连接字符串需要以下参数:

  • 服务器(-S):服务器采用 <服务器名称>-ondemand.sql.azuresynapse.azure.cn(无服务器 SQL 池)或 <服务器名称>.sql.azuresynapse.azure.cn(专用 SQL 池)形式
  • 数据库 (-d): 数据库名称
  • 启用带引号的标识符 (-I): 必须启用带引号的标识符才能连接到 Synapse SQL 实例

若要使用 SQL Server 身份验证,需要添加用户名和密码参数:

  • 用户 (-U): 采用 <User> 格式的服务器用户
  • 密码 (-P): 与用户关联的密码

连接字符串可能如以下示例所示:

无服务器 SQL 池

C:\>sqlcmd -S partyeunrt-ondemand.sql.azuresynapse.azure.cn -d demo -U Enter_Your_Username_Here -P Enter_Your_Password_Here -I

专用 SQL 池

C:\>sqlcmd -S MySqlDw.sql.azuresynapse.azure.cn -d Adventure_Works -U myuser -P myP@ssword -I

若要使用 Microsoft Entra 集成身份验证,需要添加 Microsoft Entra 参数:

  • Microsoft Entra 身份验证 (-G):使用 Microsoft Entra ID 进行身份验证

连接字符串可能如以下示例之一所示:

无服务器 SQL 池

C:\>sqlcmd -S partyeunrt-ondemand.sql.azuresynapse.azure.cn -d demo -G -I

专用 SQL 池

C:\>sqlcmd -S MySqlDw.sql.azuresynapse.azure.cn -d Adventure_Works -G -I

注意

需要启用 Microsoft Entra 身份验证才能使用 Active Directory 进行身份验证。

2.查询

使用专用 SQL 池

连接后,可以对实例发出任何支持的 Transact-SQL (T-SQL) 语句。 在此示例中,查询是以交互模式提交的:

C:\>sqlcmd -S MySqlDw.sql.azuresynapse.azure.cn -d Adventure_Works -U myuser -P myP@ssword -I
1> SELECT name FROM sys.tables;
2> GO
3> QUIT

针对专用 SQL 池,以下示例展示了如何使用 -Q 选项或将 SQL 输送到 sqlcmd,以便在批处理模式下运行查询:

sqlcmd -S MySqlDw.sql.azuresynapse.azure.cn -d Adventure_Works -U myuser -P myP@ssword -I -Q "SELECT name FROM sys.tables;"
"SELECT name FROM sys.tables;" | sqlcmd -S MySqlDw.sql.azuresynapse.azure.cn -d Adventure_Works -U myuser -P myP@ssword -I > .\tables.out

使用无服务器 SQL 池

连接后,可以对实例发出任何受支持的 Transact-SQL (T-SQL) 语句。 在以下示例中,查询是以交互模式提交的:

C:\>sqlcmd -S partyeunrt-ondemand.sql.azuresynapse.azure.cn -d demo -U Enter_Your_Username_Here -P Enter_Your_Password_Here -I
1> SELECT COUNT(*) FROM  OPENROWSET(BULK 'https://azureopendatastorage.blob.core.windows.net/censusdatacontainer/release/us_population_county/year=20*/*.parquet', FORMAT='PARQUET')
2> GO
3> QUIT

针对无服务器 SQL 池,以下示例展示了如何使用 -Q 选项或将 SQL 输送到 sqlcmd,以便在批处理模式下运行查询:

sqlcmd -S partyeunrt-ondemand.sql.azuresynapse.azure.cn -d demo -U Enter_Your_Username_Here -P 'Enter_Your_Password_Here' -I -Q "SELECT COUNT(*) FROM  OPENROWSET(BULK 'https://azureopendatastorage.blob.core.windows.net/censusdatacontainer/release/us_population_county/year=20*/*.parquet', FORMAT='PARQUET')"
"SELECT COUNT(*) FROM  OPENROWSET(BULK 'https://azureopendatastorage.blob.core.windows.net/censusdatacontainer/release/us_population_county/year=20*/*.parquet', FORMAT='PARQUET')" | sqlcmd -S partyeunrt-ondemand.sql.azuresynapse.azure.cn -d demo -U Enter_Your_Username_Here -P 'Enter_Your_Password_Here' -I > ./tables.out

后续步骤

有关 sqlcmd 选项的详细信息,请参阅 sqlcmd 文档