SQL Server Schema Reader

3.4.1 · active · verified Wed Apr 22

sql-schema-reader is a JavaScript/TypeScript library designed to programmatically extract detailed schema information from SQL Server databases. It leverages the `Tedious.js` driver for database connectivity. The package, currently at version 3.4.1, focuses on providing programmatic access to metadata such as table names, comprehensive column definitions (including nullability, types, lengths, primary/foreign keys), stored procedures, scalar functions, and table-valued functions. Its release cadence appears stable, with `3.x` being the current major version. Key differentiators include its comprehensive schema introspection capabilities specifically tailored for SQL Server, allowing developers to retrieve definitions, columns, and relationships with ease, contrasting with more generic ORM schema tools or .NET specific solutions.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to connect to a SQL Server database, retrieve a list of all table names, detailed information for the first detected table, and lists of stored procedure and table-valued function names. It includes basic error handling for common connection issues.

import schemaReader from 'sql-schema-reader';

async function go(){
    const config = {
        "server": process.env.DB_SERVER ?? 'localhost',
        "database": process.env.DB_NAME ?? 'master',
        "username": process.env.DB_USERNAME ?? 'sa',
        "password": process.env.DB_PASSWORD ?? ''  
    };

    try {
        console.log("Attempting to read SQL Server schema...");

        // Tables
        console.log("Fetching table names...");
        const tableNames = await schemaReader.tableNames(config);
        console.log("Table Names:", tableNames.map(t => `${t.schema}.${t.name}`));

        if (tableNames.length > 0) {
            const firstTableName = tableNames[0].name;
            const firstTableSchema = tableNames[0].schema;
            console.log(`Fetching details for table: ${firstTableSchema}.${firstTableName}...`);
            const table = await schemaReader.table(config, `${firstTableSchema}.${firstTableName}`);
            console.log("First Table Details:", table.columns.map(c => c.columnName));
        }

        // Stored Procedures
        console.log("Fetching stored procedure names...");
        const procNames = await schemaReader.storedProcedureNames(config);
        console.log("Stored Procedure Names:", procNames.map(p => `${p.schema}.${p.name}`));

        // Table Value Functions
        console.log("Fetching table value function names...");
        const functionNames = await schemaReader.tableValueFunctionNames(config);
        console.log("Table Value Function Names:", functionNames.map(f => `${f.schema}.${f.name}`));

    } catch (error) {
        console.error("Error reading schema:", error.message);
        if (error.code === 'ELOGIN') {
            console.error("Check your database server, username, and password.");
        } else if (error.code === 'ESOCKET') {
            console.error("Check server address, port, and network connectivity.");
        }
    }
}

go();

view raw JSON →