Szybki start: wykonywanie zapytań względem bazy danych w usłudze Azure SQL Database lub Azure SQL Managed Instance przy użyciu biblioteki Node.js

Dotyczy: Azure SQL DatabaseAzure SQL Managed Instance

W tym przewodniku Szybki start użyjesz narzędzia Node.js, aby nawiązać połączenie z bazą danych i wysyłać zapytania o dane.

Wymagania wstępne

Aby ukończyć ten przewodnik Szybki Start, musisz spełnić następujące warunki:


Ważne

Skrypty w tym artykule są napisane w celu korzystania z bazy danych AdventureWorks .

Uzyskiwanie informacji o połączeniu z serwerem

Uzyskaj informacje o połączeniu, które należy połączyć z bazą danych. Do wykonania kolejnych kroków będą potrzebne w pełni kwalifikowana nazwa serwera lub nazwa hosta, nazwa bazy danych i informacje logowania.

  1. Zaloguj się w witrynie Azure Portal.

  2. Przejdź do strony Bazy danych SQL lub Wystąpienia zarządzane SQL.

  3. Na stronie Przegląd przejrzyj w pełni kwalifikowaną nazwę serwera obok pozycji Nazwa serwera bazy danych w usłudze Azure SQL Database lub w pełni kwalifikowaną nazwę serwera (lub adres IP) obok pozycji Host dla usługi Azure SQL Managed Instance lub programu SQL Server na maszynie wirtualnej platformy Azure. Aby skopiować nazwę serwera lub hosta, umieść na niej wskaźnik myszy i wybierz ikonę Kopiuj.

Uwaga

Aby uzyskać informacje o połączeniu dla programu SQL Server na maszynie wirtualnej platformy Azure, zobacz Połączenie z programem SQL Server.

Tworzenie projektu

Otwórz wiersz polecenia i utwórz folder o nazwie sqltest. Otwórz utworzony folder i uruchom następujące polecenie:

npm init -y
npm install mssql

Dodawanie kodu w celu wykonywania zapytań względem bazy danych

  1. W ulubionym edytorze tekstów utwórz nowy plik sqltest.js w folderze, w którym utworzono projekt (sqltest).

  2. Zastąp jego zawartość poniższym kodem. Następnie dodaj odpowiednie wartości dla swojego serwera, bazy danych, użytkownika i hasła.

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

Uwaga

Aby uzyskać więcej informacji na temat używania tożsamości zarządzanej do uwierzytelniania, ukończ samouczek uzyskiwania dostępu do danych za pośrednictwem tożsamości zarządzanej. Szczegółowe informacje na temat opcji konfiguracji Tedious dla identyfikatora entra firmy Microsoft (dawniej Azure Active Directory) są dostępne w dokumentacji Tedious.

Uruchamianie kodu

  1. W wierszu polecenia uruchom program.

    node sqltest.js
    
  2. Sprawdź, czy zostało zwróconych 20 pierwszych wierszy, i zamknij okno aplikacji.

Następne kroki