クイック スタート:Node.js を使用して Azure SQL Database または Azure SQL Managed Instance 内のデータベースに対してクエリを実行する

適用対象:Azure SQL データベースAzure SQL Managed Instance

このクイックスタートでは、Node.js を使用してデータベースに接続し、データに対してクエリを実行します。

前提条件

このクイック スタートを完了するには、次のものが必要です。


重要

この記事のスクリプトは、AdventureWorks データベースを使用するように記述されています。

サーバーの接続情報を取得する

データベースに接続するために必要な接続情報を取得します。 後の手順で、完全修飾サーバー名またはホスト名、データベース名、およびログイン情報が必要になります。

  1. Azure portal にサインインします。

  2. [SQL Database] または [SQL Managed Instance] ページに移動します。

  3. [概要] ページで、Azure SQL Database 内のデータベースの [サーバー名] の横にある完全修飾サーバー名、または Azure SQL Managed Instance または Azure VM 上の SQL Server の [ホスト] の横にある完全修飾サーバー名 (または IP アドレス) を確認します。 サーバー名またはホスト名をコピーするには、名前をポイントして [コピー] アイコンを選択します。

Note

Azure VM 上の SQL Server の接続情報については、SQL Server への接続に関するページをご覧ください。

プロジェクトを作成する

コマンド プロンプトを開き、sqltest という名前のフォルダーを作成します。 作成したフォルダーを開き、次のコマンドを実行します。

npm init -y
npm install mssql

データベースに対してクエリを実行するコードを追加する

  1. お好きなテキスト エディターで、プロジェクト (sqltest) を作成したフォルダーに、sqltest.js という新しいファイルを作成します。

  2. その内容を次のコードに置き換えます。 そのうえで、サーバー、データベース、ユーザー、パスワードの適切な値を入力してください。

    const sql = require('mssql');
    
    const config = {
        user: 'username', // better stored in an app setting such as process.env.DB_USER
        password: 'password', // better stored in an app setting such as process.env.DB_PASSWORD
        server: 'your_server.database.windows.net', // better stored in an app setting such as process.env.DB_SERVER
        port: 1433, // optional, defaults to 1433, better stored in an app setting such as process.env.DB_PORT
        database: 'AdventureWorksLT', // better stored in an app setting such as process.env.DB_NAME
        authentication: {
            type: 'default'
        },
        options: {
            encrypt: true
        }
    }
    
    /*
        //Use Azure VM Managed Identity to connect to the SQL database
        const config = {
            server: process.env["db_server"],
            port: process.env["db_port"],
            database: process.env["db_database"],
            authentication: {
                type: 'azure-active-directory-msi-vm'
            },
            options: {
                encrypt: true
            }
        }
    
        //Use Azure App Service Managed Identity to connect to the SQL database
        const config = {
            server: process.env["db_server"],
            port: process.env["db_port"],
            database: process.env["db_database"],
            authentication: {
                type: 'azure-active-directory-msi-app-service'
            },
            options: {
                encrypt: true
            }
        }
    */
    
    console.log("Starting...");
    connectAndQuery();
    
    async function connectAndQuery() {
        try {
            var poolConnection = await sql.connect(config);
    
            console.log("Reading rows from the Table...");
            var resultSet = await poolConnection.request().query(`SELECT TOP 20 pc.Name as CategoryName,
                p.name as ProductName 
                FROM [SalesLT].[ProductCategory] pc
                JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid`);
    
            console.log(`${resultSet.recordset.length} rows returned.`);
    
            // output column headers
            var columns = "";
            for (var column in resultSet.recordset.columns) {
                columns += column + ", ";
            }
            console.log("%s\t", columns.substring(0, columns.length - 2));
    
            // ouput row contents from default record set
            resultSet.recordset.forEach(row => {
                console.log("%s\t%s", row.CategoryName, row.ProductName);
            });
    
            // close connection only when we're certain application is finished
            poolConnection.close();
        } catch (err) {
            console.error(err.message);
        }
    }
    

Note

認証にマネージド ID を使用する方法の詳細については、マネージド ID を使用してデータにアクセスするためのチュートリアルを参照してください。 Tedious の Microsoft Entra ID (旧称 Azure Active Directory) 用の構成オプションの詳細については、Tedious のドキュメントを参照してください。

コードの実行

  1. コマンド プロンプトでプログラムを実行します。

    node sqltest.js
    
  2. 先頭から 20 行が返されることを確認して、アプリケーション ウィンドウを閉じます。

次のステップ