Mulai Cepat: Menggunakan Node.js untuk mengkueri database di Azure SQL Database atau Azure SQL Managed Instance

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

Dalam mulai cepat ini, Anda menggunakan Node.js untuk terhubung ke database dan data kueri.

Prasyarat

Untuk menyelesaikan mulai cepat ini, Anda memerlukan:


Penting

Skrip dalam artikel ini ditulis untuk menggunakan database AdventureWorks .

Dapatkan informasi koneksi server

Dapatkan informasi koneksi yang Anda perlukan untuk menyambungkan ke database. Anda akan memerlukan nama server atau nama host, nama database, dan informasi masuk yang sepenuhnya memenuhi syarat untuk langkah-langkah mendatang.

  1. Masuk ke portal Azure.

  2. Masuk ke halaman SQL Databases atau SQL Managed Instances.

  3. Pada halaman Ringkasan, tinjau nama server yang sepenuhnya memenuhi syarat di samping Nama server untuk database di Azure SQL Database atau nama server (atau alamat IP) yang sepenuhnya memenuhi syarat di samping Host untuk Azure SQL Managed Instance atau SQL Server di VM Azure. Untuk menyalin nama server atau nama host, arahkan mouse ke atasnya dan pilih ikon Salin.

Catatan

Untuk informasi koneksi untuk SQL Server di VM Azure, lihat Menyambungkan ke SQL Server.

Membuat proyek

Buka prompt perintah dan buat folder bernama sqltest. Buka folder yang Anda buat dan jalankan perintah berikut ini:

npm init -y
npm install mssql

Menambahkan kode untuk mengkueri database

  1. Di editor teks favorit Anda, buat file baru, sqltest.js, di folder tempat Anda membuat proyek (sqltest).

  2. Ganti isinya dengan kode berikut. Kemudian tambahkan nilai yang sesuai untuk server, database, pengguna, dan kata sandi Anda.

    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);
        }
    }
    

Catatan

Untuk informasi selengkapnya tentang penggunaan identitas terkelola untuk autentikasi, lengkapi tutorial untuk mengakses data melalui identitas terkelola. Detail tentang opsi konfigurasi Tedious untuk MICROSOFT Entra ID (sebelumnya Azure Active Directory) tersedia dalam dokumentasi Tedious.

Menjalankan kode

  1. Di perintah, jalankan program.

    node sqltest.js
    
  2. Verifikasi 20 baris teratas yang dikembalikan lalu tutup jendela aplikasi.

Langkah berikutnya