sqlcmd を使用して Synapse SQL に接続する

sqlcmd コマンド ライン ユーティリティを使用して、Synapse SQL 内のサーバーレス SQL プールおよび専用 SQL プールに接続し、クエリを実行することができます。

1.接続する

sqlcmd の使用を開始するには、コマンド プロンプトを開いて「sqlcmd」と入力し、続けて Synapse SQL データベースの接続文字列を入力します。 接続文字列では、次のパラメーターが必要になります。

  • サーバー (-S):<サーバー名>-ondemand.sql.azuresynapse.net (サーバーレス SQL プール) または <サーバー名>.sql.azuresynapse.net (専用 SQL プール) の形式のサーバー
  • データベース (-d): データベース名
  • 引用符で囲まれた ID の有効化 (-I): Synapse SQL インスタンスに接続するには、引用符で囲まれた ID を有効にする必要があります。

SQL Server 認証を使用するには、ユーザー名とパスワードのパラメーターを追加する必要があります。

  • ユーザー (-U): サーバーのユーザー。<User> の形式で指定します。
  • パスワード (-P): ユーザーに関連付けられているパスワード

たとえば、接続文字列は次のようになります。

サーバーレス SQL プール

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

専用 SQL プール

C:\>sqlcmd -S MySqlDw.sql.azuresynapse.net -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.net -d demo -G -I

専用 SQL プール

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

Note

Microsoft Entra ID を使用して認証を行うには、Microsoft Entra 認証を有効にする必要があります。

2.クエリ

専用 SQL プールを使用する

接続後、インスタンスに対してサポートされているすべての Transact-SQL (T-SQL) ステートメントを発行できます。 この例では、クエリは対話モードで送信されます。

C:\>sqlcmd -S MySqlDw.sql.azuresynapse.net -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.net -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.net -d Adventure_Works -U myuser -P myP@ssword -I > .\tables.out

サーバーレス SQL プールを使用する

接続後、インスタンスに対してサポートされているすべての Transact-SQL (T-SQL) ステートメントを発行できます。 次の例では、クエリが対話モードで送信されます。

C:\>sqlcmd -S partyeunrt-ondemand.sql.azuresynapse.net -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.net -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.net -d demo -U Enter_Your_Username_Here -P 'Enter_Your_Password_Here' -I > ./tables.out

次のステップ

sqlcmd のオプションの詳細については、sqlcmd のドキュメントを参照してください。