クイック スタート:Node.js を使用して Azure SQL Database または Azure SQL Managed Instance 内のデータベースに対してクエリを実行する
適用対象: Azure SQL データベース
Azure SQL Managed Instance
このクイックスタートでは、Node.js を使用してデータベースに接続し、データに対してクエリを実行します。
前提条件
このクイック スタートを完了するには、次のものが必要です。
アクティブなサブスクリプションを持つ Azure アカウントと、Azure VM 上の Azure SQL Database、Azure SQL Managed Instance、または SQL Server データベース。 無料でアカウントを作成できます。
アクション SQL Database SQL Managed Instance Azure VM 上の SQL Server 作成 ポータル ポータル ポータル CLI Bicep PowerShell PowerShell PowerShell 構成 サーバーレベルの IP ファイアウォール規則 VM からの接続 オンプレミスからの接続 SQL Server インスタンスに接続する データの読み込み クイックスタートごとに読み込まれた Wide World Importers Wide World Importers を復元する Wide World Importers を復元する GitHubのBACPAC ファイルから Adventure Works を復元またはインポートする GitHubのBACPAC ファイルから Adventure Works を復元またはインポートする Node.js 関連のソフトウェア
Node.js をインストールし、「Microsoft ODBC Driver for SQL Server をインストールする (macOS)」の手順に従って ODBC ドライバーをインストールします。
重要
この記事のスクリプトは、AdventureWorks データベースを使用するように記述されています。
サーバーの接続情報を取得する
データベースに接続するために必要な接続情報を取得します。 後の手順で、完全修飾サーバー名またはホスト名、データベース名、およびログイン情報が必要になります。
Azure portal にサインインします。
[SQL Database] または [SQL Managed Instance] ページに移動します。
[概要] ページで、Azure SQL Database 内のデータベースの [サーバー名] の横にある完全修飾サーバー名、または Azure SQL Managed Instance または Azure VM 上の SQL Server の [ホスト] の横にある完全修飾サーバー名 (または IP アドレス) を確認します。 サーバー名またはホスト名をコピーするには、名前をポイントして [コピー] アイコンを選択します。
注意
Azure VM 上の SQL Server の接続情報については、SQL Server への接続に関するページをご覧ください。
プロジェクトを作成する
コマンド プロンプトを開き、sqltest という名前のフォルダーを作成します。 作成したフォルダーを開き、次のコマンドを実行します。
npm init -y
npm install mssql
データベースに対してクエリを実行するコードを追加する
お好きなテキスト エディターで、プロジェクト (sqltest) を作成したフォルダーに、sqltest.js という新しいファイルを作成します。
その内容を次のコードに置き換えます。 そのうえで、サーバー、データベース、ユーザー、パスワードの適切な値を入力してください。
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); } }
注意
認証にマネージド ID を使用する方法の詳細については、マネージド ID を使用してデータにアクセスするためのチュートリアルを参照してください。 Tedious の Microsoft Entra ID (旧称 Azure Active Directory) 用の構成オプションの詳細については、Tedious のドキュメントを参照してください。
コードの実行
コマンド プロンプトでプログラムを実行します。
node sqltest.js
先頭から 20 行が返されることを確認して、アプリケーション ウィンドウを閉じます。