Infraviewer - Volltextsuche für MS SQL Server Express
Eine leistungsstarke Webanwendung zur Durchführung von Volltextsuchen über mehrere Tabellen in einer MS SQL Server Express Datenbank.
Features
- 🔍 Volltextsuche über mehrere Tabellen gleichzeitig
- 📊 Übersichtliche Darstellung der Suchergebnisse
- ⚡ Schnelle Performance mit Connection Pooling
- 🎨 Moderne Benutzeroberfläche mit responsivem Design
- 📝 Einfache Konfiguration der zu durchsuchenden Tabellen und Spalten
- 🔧 REST API für Integrationen
Installation
Voraussetzungen
- Node.js (Version 14 oder höher)
- MS SQL Server Express
- npm oder yarn
Schritte
-
Abhängigkeiten installieren:
npm install -
Umgebungsvariablen konfigurieren:
Kopieren Sie
.env.examplezu.envund passen Sie die Datenbankverbindung an:cp .env.example .envBearbeiten Sie
.envmit Ihren Datenbankzugangsdaten:DB_SERVER=localhost DB_PORT=1433 DB_DATABASE=IhreDatenbankName DB_USER=IhrBenutzername DB_PASSWORD=IhrPasswort DB_ENCRYPT=true DB_TRUST_SERVER_CERTIFICATE=true PORT=3000 -
Suchkonfiguration anpassen:
Öffnen Sie
services/searchService.jsund passen Sie dasSEARCH_CONFIGArray an Ihre Tabellen an:const SEARCH_CONFIG = [ { tableName: 'IhreTabellenName', columns: ['Spalte1', 'Spalte2', 'Spalte3'], primaryKey: 'ID' }, // Weitere Tabellen hinzufügen... ]; -
Server starten:
npm startFür Entwicklung mit automatischem Neustart:
npm run dev -
Anwendung öffnen:
Öffnen Sie Ihren Browser und navigieren Sie zu:
http://localhost:3000
Verwendung
Web-Oberfläche
- Öffnen Sie die Anwendung in Ihrem Browser
- Geben Sie Ihren Suchbegriff in das Suchfeld ein
- Klicken Sie auf "Suchen" oder drücken Sie Enter
- Die Ergebnisse werden übersichtlich nach Tabellen gruppiert angezeigt
API-Endpunkte
Suche durchführen
GET /api/search?q=suchbegriff
Antwort:
{
"success": true,
"searchTerm": "suchbegriff",
"totalMatches": 15,
"tablesSearched": 10,
"results": [
{
"tableName": "Kunden",
"matchCount": 5,
"records": [...]
}
]
}
Verfügbare Tabellen abrufen
GET /api/search/tables
Spalten einer Tabelle abrufen
GET /api/search/tables/:tableName
Suchkonfiguration anzeigen
GET /api/search/config
Health Check
GET /api/health
Konfiguration
Tabellen hinzufügen/ändern
Bearbeiten Sie services/searchService.js und fügen Sie neue Einträge zum SEARCH_CONFIG Array hinzu:
{
tableName: 'NeueTabelle', // Name der Tabelle in der Datenbank
columns: ['Spalte1', 'Spalte2'], // Spalten, die durchsucht werden sollen
primaryKey: 'ID' // Primärschlüssel der Tabelle
}
Suchverhalten anpassen
Die Suche verwendet standardmäßig das SQL LIKE Pattern mit Wildcards (%suchbegriff%).
Dies findet den Suchbegriff überall in den konfigurierten Spalten.
Für weitere Anpassungen können Sie die Funktion buildSearchCondition in services/searchService.js modifizieren.
Projektstruktur
infraviewer/
├── config/
│ └── database.js # Datenbankkonfiguration
├── services/
│ └── searchService.js # Such-Logik
├── routes/
│ └── search.js # API-Routen
├── public/
│ └── index.html # Web-Oberfläche
├── server.js # Express-Server
├── package.json # Abhängigkeiten
├── .env.example # Beispiel-Umgebungsvariablen
└── README.md # Diese Datei
Sicherheitshinweise
- ✅ Verwendet parametrisierte Queries zum Schutz vor SQL-Injection
- ✅
.envDatei wird nicht ins Repository commited (.gitignore) - ✅ Passwörter werden niemals im Code gespeichert
- ⚠️ Stellen Sie sicher, dass der Datenbankbenutzer nur die benötigten Berechtigungen hat (READ-only für Suche)
Fehlerbehebung
Verbindungsfehler
- Überprüfen Sie die Datenbankverbindungsparameter in
.env - Stellen Sie sicher, dass SQL Server läuft und TCP/IP aktiviert ist
- Prüfen Sie die Firewall-Einstellungen
Tabellen nicht gefunden
- Überprüfen Sie die Schreibweise der Tabellennamen in
SEARCH_CONFIG - Stellen Sie sicher, dass der Datenbankbenutzer Leserechte auf die Tabellen hat
- Verwenden Sie
/api/search/tablesum alle verfügbaren Tabellen anzuzeigen
Performance-Probleme
- Erstellen Sie Indizes auf häufig durchsuchten Spalten
- Reduzieren Sie die Anzahl der durchsuchten Spalten
- Erwägen Sie die Verwendung von SQL Server Full-Text Search für große Datenmengen
Lizenz
ISC
Support
Bei Fragen oder Problemen öffnen Sie bitte ein Issue im Repository.