Azure SQL Edge の接続とクエリ

重要

Azure SQL Edge では、ARM64 プラットフォームがサポートされなくなりました。

Azure SQL Edge では、コンテナーをデプロイした後、次のいずれかの場所からデータベース エンジンに接続できます。

  • コンテナー内
  • 同じホストで実行されている別の Docker コンテナーから
  • ホスト コンピューターから
  • ネットワーク上の他のクライアント コンピューターから

Azure SQL Edge に接続するためのツール

次のいずれかの一般的なツールから Azure SQL Edge インスタンスに接続できます。

  • sqlcmd: sqlcmd クライアント ツールは、Azure SQL Edge のコンテナー イメージに既に含まれています。 対話型の Bash シェルで実行中のコンテナーにアタッチする場合は、ツールをローカルで実行できます。 SQL クライアント ツールは、ARM64 プラットフォームでは使用できません。
  • SQL Server Management Studio
  • Azure Data Studio
  • Visual Studio Code

ネットワーク マシンから Azure SQL Edge データベース エンジンに接続するには、次のものが必要です。

  • ホスト マシンの IP アドレスまたはネットワーク名: これは、Azure SQL Edge コンテナーが実行されているホスト マシンです。

  • Azure SQL Edge コンテナー ホストのポート マッピング: これは、Docker コンテナー ポートをホスト上のポートにマップするポートです。 コンテナー内では、Azure SQL Edge は常にポート 1433 にマップされます。 これは、必要に応じて変更できます。 ポート番号を変更するには、Azure IoT Edge の Azure SQL Edge モジュールの [コンテナーの作成オプション] を更新します。 次の例では、コンテナーのポート 1433 がホストのポート 1600 にマッピングされています。

    {
        "PortBindings": {
          "1433/tcp": [
            {
              "HostPort": "1600"
            }
          ]
        }
    }
    
  • Azure SQL Edge インスタンスの SA パスワード: これは、Azure SQL Edge のデプロイ中に SA_PASSWORD 環境変数に指定された値です。

コンテナー内からデータベース エンジンに接続する

SQL Server コマンドライン ツールは、Azure SQL Edge のコンテナー イメージに含まれています。 対話型のコマンド プロンプトを使用してコンテナーにアタッチすると、ツールをローカルで実行できます。 SQL クライアント ツールは、ARM64 プラットフォームでは使用できません。

  1. 実行中のコンテナー内で対話型の Bash シェルを開始するには、docker exec -it コマンドを使用します。 次の例では、e69e056c702d はコンテナー ID です。

    docker exec -it e69e056c702d /bin/bash
    

    ヒント

    常にコンテナー ID 全体を指定する必要はありません。 一意に識別するのに十分な文字を指定するだけでかまいません。 したがって、この例では、完全な ID ではなく e6 または e69 を使用すれば十分な可能性があります。

  2. コンテナー内では sqlcmd とローカル接続してください。 既定では sqlcmd はパスにないため、完全なパスを指定する必要があります。

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'
    
  3. sqlcmd が完了したら、「exit」と入力します。

  4. 対話型コマンド プロンプトでの操作が完了したら、「exit」と入力します。 コンテナーは、対話型の Bash シェルを終了した後も引き続き実行されます。

同じホスト上の別のコンテナーから Azure SQL Edge に接続する

同じホスト上で実行されている 2 つのコンテナーは同じ Docker ネットワーク上にあるため、サービスのコンテナー名とポート アドレスを使用して簡単にアクセスできます。 たとえば、同じホスト上の別の Python モジュール (コンテナー) から Azure SQL Edge のインスタンスに接続する場合は、次のような接続文字列を使用できます。 (この例では、既定のポートでリッスンするように Azure SQL Edge が構成されていることを前提としています)。

import pyodbc
server = 'MySQLEdgeContainer' # Replace this with the actual name of your SQL Edge Docker container
username = 'sa' # SQL Server username
password = 'MyStrongestP@ssword' # Replace this with the actual SA password from your deployment
database = 'MyEdgeDatabase' # Replace this with the actual database name from your deployment. If you do not have a database created, you can use Master database.
db_connection_string = "Driver={ODBC Driver 17 for SQL Server};Server=" + server + ";Database=" + database + ";UID=" + username + ";PWD=" + password + ";"
conn = pyodbc.connect(db_connection_string, autocommit=True)

別のネットワーク マシンから Azure SQL Edge に接続する

ネットワーク上の別のマシンから Azure SQL Edge のインスタンスに接続することもできます。 そのためには、Docker ホストの IP アドレスと、Azure SQL Edge コンテナーがマップされているホスト ポートを使用します。 たとえば、Docker ホストの IP アドレスが 192.168.2.121 であり、Azure SQL Edge コンテナーがホスト ポート 1600 にマップされている場合、Azure SQL Edge のインスタンスのサーバー アドレスは 192.168.2.121,1600 になります。 更新された Python スクリプトは次のようになります。

import pyodbc
server = '192.168.2.121,1600' # Replace this with the actual name or IP address of your SQL Edge Docker container
username = 'sa' # SQL Server username
password = 'MyStrongestP@ssword' # Replace this with the actual SA password from your deployment
database = 'MyEdgeDatabase' # Replace this with the actual database name from your deployment. If you do not have a database created, you can use Master database.
db_connection_string = "Driver={ODBC Driver 17 for SQL Server};Server=" + server + ";Database=" + database + ";UID=" + username + ";PWD=" + password + ";"
conn = pyodbc.connect(db_connection_string, autocommit=True)

Windows マシン上で実行されている SQL Server Management Studio を使用して Azure SQL Edge のインスタンスに接続するには、SQL Server Management Studio に関するページを参照してください。

Windows、macOS、または Linux マシン上で Visual Studio Code を使用して Azure SQL Edge のインスタンスに接続するには、Visual Studio Code に関するページを参照してください。

Windows、macOS、または Linux マシン上で Azure Data Studio を使用して Azure SQL Edge のインスタンスに接続するには、Azure Data Studio に関するページを参照してください。

次のステップ