{"library":"sql-schema-reader","title":"SQL Server Schema Reader","type":"library","description":"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.","language":"javascript","status":"active","last_verified":"Wed Apr 22","install":{"commands":["npm install sql-schema-reader"],"cli":null},"imports":["import schemaReader from 'sql-schema-reader';","import { tableNames } from 'sql-schema-reader';","import type { ConfigObject } from 'sql-schema-reader';"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/he3/SqlSchemaReader","docs":null,"changelog":null,"pypi":null,"npm":"https://www.npmjs.com/package/sql-schema-reader","openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import schemaReader from 'sql-schema-reader';\n\nasync function go(){\n    const config = {\n        \"server\": process.env.DB_SERVER ?? 'localhost',\n        \"database\": process.env.DB_NAME ?? 'master',\n        \"username\": process.env.DB_USERNAME ?? 'sa',\n        \"password\": process.env.DB_PASSWORD ?? ''  \n    };\n\n    try {\n        console.log(\"Attempting to read SQL Server schema...\");\n\n        // Tables\n        console.log(\"Fetching table names...\");\n        const tableNames = await schemaReader.tableNames(config);\n        console.log(\"Table Names:\", tableNames.map(t => `${t.schema}.${t.name}`));\n\n        if (tableNames.length > 0) {\n            const firstTableName = tableNames[0].name;\n            const firstTableSchema = tableNames[0].schema;\n            console.log(`Fetching details for table: ${firstTableSchema}.${firstTableName}...`);\n            const table = await schemaReader.table(config, `${firstTableSchema}.${firstTableName}`);\n            console.log(\"First Table Details:\", table.columns.map(c => c.columnName));\n        }\n\n        // Stored Procedures\n        console.log(\"Fetching stored procedure names...\");\n        const procNames = await schemaReader.storedProcedureNames(config);\n        console.log(\"Stored Procedure Names:\", procNames.map(p => `${p.schema}.${p.name}`));\n\n        // Table Value Functions\n        console.log(\"Fetching table value function names...\");\n        const functionNames = await schemaReader.tableValueFunctionNames(config);\n        console.log(\"Table Value Function Names:\", functionNames.map(f => `${f.schema}.${f.name}`));\n\n    } catch (error) {\n        console.error(\"Error reading schema:\", error.message);\n        if (error.code === 'ELOGIN') {\n            console.error(\"Check your database server, username, and password.\");\n        } else if (error.code === 'ESOCKET') {\n            console.error(\"Check server address, port, and network connectivity.\");\n        }\n    }\n}\n\ngo();\n","lang":"typescript","description":"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.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}