Microsoft SQL Server
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
Installation
npm install mssql
Datenquellen-Optionen
Allgemeine Datenquellen-Optionen finden Sie unter Data Source Options.
Basiert auf der tedious-MSSQL-Implementierung. Details zu verfügbaren Attributen finden Sie in SqlServerConnectionOptions.ts.
-
url- Verbindungs-URL, über die die Verbindung hergestellt wird. Beachten Sie, dass andere Datenquellen-Optionen Parameter aus der URL überschreiben. -
host- Datenbank-Host. -
port- Port des Datenbank-Hosts. Standardport für MSSQL ist1433. -
username- Datenbank-Benutzername. -
password- Datenbank-Passwort. -
database- Datenbankname. -
schema- Schema-Name. Standard ist "dbo". -
domain- Bei Angabe einer Domain verbindet sich der Treiber mit SQL Server über eine Domänenanmeldung. -
connectionTimeout- Verbindungs-Timeout in ms (Standard:15000). -
requestTimeout- Anfrage-Timeout in ms (Standard:15000). HINWEIS: Der msnodesqlv8-Treiber unterstützt keine Timeouts unter 1 Sekunde. -
stream- Überträgt Datensätze/Zeilen als Stream, statt sie auf einmal an die Callback-Funktion zu übergeben (Standard:false). Streaming kann auch pro Anfrage aktiviert werden (request.stream = true). Immer auftruesetzen, wenn mit großen Datenmengen gearbeitet wird. -
pool.max- Maximale Anzahl von Verbindungen im Pool (Standard:10). -
pool.min- Minimale Anzahl von Verbindungen im Pool (Standard:0). -
pool.maxWaitingClients- Maximale Anzahl wartender Anfragen; zusätzliche acquire-Aufrufe erhalten in einem späteren Event-Loop-Zyklus einen Fehler. -
pool.acquireTimeoutMillis- Maximale Wartezeit in ms, die einacquire-Aufruf auf eine Ressource wartet, bevor ein Timeout eintritt. (Standard: unbegrenzt). Bei Angabe muss es sich um eine positive Ganzzahl handeln. -
pool.fifo- Bei true werden die ältesten Ressourcen zuerst zugewiesen. Bei false werden zuletzt freigegebene Ressourcen priorisiert. Dies wandelt das Pool-Verhalten von einer Warteschlange in einen Stack. Boolean (Standard:true). -
pool.priorityRange- Ganzzahl zwischen 1 und x. Bei Angabe können Anfragende bei Ressourcenmangel eine Priorität in der Warteschlange festlegen. Siehe Beispiel (Standard:1). -
pool.evictionRunIntervalMillis- Intervall für Ressourcen-Prüfungen in ms. Standard:0(deaktiviert). -
pool.numTestsPerRun- Anzahl der pro Prüflauf untersuchten Ressourcen. Standard:3. -
pool.softIdleTimeoutMillis- Zeit in ms, die eine Ressource im Pool im Leerlauf verbringen darf, bevor sie entfernt werden kann – vorausgesetzt, mindestens "min idle"-Instanzen verbleiben im Pool. Standard:-1(keine Entfernung). -
pool.idleTimeoutMillis- Minimale Leerlaufzeit in ms, nach der eine Ressource aufgrund von Inaktivität entfernt werden kann. ÜberschreibtsoftIdleTimeoutMillis. Standard:30000. -
pool.errorHandler- Funktion, die bei'error'-Ereignissen des Pools aufgerufen wird. Akzeptiert einen Fehler-Parameter. Standardmäßig wird aufwarn-Level geloggt. -
options.fallbackToDefaultDb- Standardmäßig schlägt die Verbindung fehl, wenn die inoptions.databaseangeforderte Datenbank nicht erreichbar ist. Wenn jedochoptions.fallbackToDefaultDbauftruegesetzt ist, wird stattdessen die Standarddatenbank des Benutzers verwendet (Standard:false). -
options.instanceName- Instanzname für die Verbindung. Der SQL Server Browser-Dienst muss auf dem Datenbankserver laufen und UDP-Port 1434 erreichbar sein. Gegenseitig ausschließend mitport(kein Standard). -
options.enableAnsiNullDefault- Bei true wirdSET ANSI_NULL_DFLT_ON ONim initialen SQL gesetzt. Dadurch sind neue Spalten standardmäßig nullable. Details siehe T-SQL-Dokumentation (Standard:true). -
options.cancelTimeout- Millisekunden, bevor ein Abbruch (Abort) einer Anfrage als fehlgeschlagen gilt (Standard:5000). -
options.packetSize- Größe der TDS-Pakete (unterliegt der Aushandlung mit dem Server). Sollte eine Zweierpotenz sein (Standard:4096). -
options.useUTC- Legt fest, ob Zeitwerte in UTC oder Ortszeit übergeben werden (Standard:false). -
options.abortTransactionOnError- Legt fest, ob Transaktionen automatisch zurückgesetzt werden, wenn während ihrer Ausführung Fehler auftreten. Setzt den Wert fürSET XACT_ABORTwährend der initialen Verbindungsphase (Dokumentation). -
options.localAddress- IP-Adresse der Netzwerkschnittstelle, die für die Verbindung zu SQL Server verwendet werden soll. -
options.useColumnNames- Legt fest, ob Zeilen als Arrays oder Schlüssel-Wert-Sammlungen zurückgegeben werden (Standard:false). -
options.camelCaseColumns- Steuert, ob der erste Buchstabe von Spaltennamen in Kleinbuchstaben konvertiert wird (true). Dieser Wert wird ignoriert, wenncolumnNameReplacergesetzt ist (Standard:false). -
options.isolationLevel- Standard-Isolationslevel für Transaktionen. Siehe Bekannte Probleme > Verbindungspool setzt Isolationslevel nicht zurück.READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLESNAPSHOT
(Standard:
READ COMMITTED) -
options.connectionIsolationLevel- Standard-Isolationslevel für neue Verbindungen. Alle abfragen außerhalb von Transaktionen verwenden diese Einstellung. Siehe Bekannte Probleme > Verbindungspool setzt Isolationslevel nicht zurück.READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLESNAPSHOT
(Standard:
READ COMMITTED) -
options.readOnlyIntent- Legt fest, ob die Verbindung nur Lesezugriff von einer SQL Server Availability Group anfordert (Standard:false). -
options.encrypt- Legt fest, ob die Verbindung verschlüsselt wird. Für Windows Azure auf true setzen (Standard:true). -
options.cryptoCredentialsDetails- Bei Verwendung von Verschlüsselung: Objekt, das als erstes Argument für tls.createSecurePair dient (Standard:{}). -
options.rowCollectionOnDone- Ein Boolean, der bei true die empfangenen Zeilen in dendone*-Events von Requests verfügbar macht. Siehe done, doneInProc und doneProc (Standard:false).Achtung: Bei vielen Zeilen kann dies zu hohem Speicherverbrauch führen.
-
options.rowCollectionOnRequestCompletion- Bei true werden empfangene Zeilen im Completion-Callback von Requests verfügbar gemacht. Siehe new Request (Standard:false).Achtung: Bei vielen Zeilen kann dies zu hohem Speicherverbrauch führen.
-
options.tdsVersion- Die zu verwendende TDS-Version. Wenn der Server die angegebene Version nicht unterstützt, wird stattdessen eine ausgehandelte Version verwendet. Die verfügbaren Versionen sind überrequire('tedious').TDS_VERSIONabrufbar.7_17_27_3_A7_3_B7_4
(Standard:
7_4) -
options.appName- Anwendungsname zur Identifizierung einer bestimmten Anwendung in Profiling-, Logging- oder Tracing-Tools von SQL Server. (Standard:node-mssql) -
options.trustServerCertificate- Ein Boolean, der steuert, ob Verschlüsselung erfolgt, wenn kein verifizierbares Serverzertifikat vorhanden ist. (Standard:false) -
options.multiSubnetFailover- Ein Boolean, der steuert, ob der Treiber parallel zu allen von DNS zurückgegebenen IPs verbinden soll. (Standard:false) -
options.debug.packet- Ein Boolean, der steuert, obdebug-Ereignisse mit Text, der Paketdetails beschreibt, ausgegeben werden (Standard:false). -
options.debug.data- Ein Boolean, der steuert, obdebug-Ereignisse mit Text, der Paketdaten-Details beschreibt, ausgegeben werden (Standard:false). -
options.debug.payload- Ein Boolean, der steuert, obdebug-Ereignisse mit Text, der Nutzdaten-Details beschreibt, ausgegeben werden (Standard:false). -
options.debug.token- Ein Boolean, der steuert, obdebug-Ereignisse mit Text, der Token aus dem Token-Stream beschreibt, ausgegeben werden (Standard:false).
Spaltentypen
int, bigint, bit, decimal, money, numeric, smallint, smallmoney, tinyint, float, real, date, datetime2, datetime, datetimeoffset, smalldatetime, time, char, varchar, text, nchar, nvarchar, ntext, binary, image, varbinary, hierarchyid, sql_variant, timestamp, uniqueidentifier, xml, geometry, geography, rowversion, vector
Vektor-Typ (vector)
Der vector-Datentyp ist in SQL Server zum Speichern hochdimensionaler Vektoren verfügbar, häufig verwendet für:
-
Semantische Suche mit Embeddings
-
Empfehlungssysteme
-
Ähnlichkeitsabgleich
-
Machine-Learning-Anwendungen
HINWEIS: Allgemeine Unterstützung für halfvec ist nicht verfügbar, da sich diese Funktion noch in der Vorschau befindet. Siehe Microsoft-Dokumentation: Vector data type.
Verwendung
@Entity()
export class DocumentChunk {
@PrimaryGeneratedColumn()
id: number
@Column("varchar")
content: string
// Vector column with 1998 dimensions
@Column("vector", { length: 1998 })
embedding: number[]
}
Vektor-Ähnlichkeitssuche
SQL Server stellt die Funktion VECTOR_DISTANCE zur Distanzberechnung zwischen Vektoren bereit:
const queryEmbedding = [
/* your query vector */
]
const results = await dataSource.query(
`
DECLARE @question AS VECTOR (1998) = @0;
SELECT TOP (10) dc.*,
VECTOR_DISTANCE('cosine', @question, embedding) AS distance
FROM document_chunk dc
ORDER BY VECTOR_DISTANCE('cosine', @question, embedding)
`,
[JSON.stringify(queryEmbedding)],
)
Distanzmetriken:
-
'cosine'- Kosinus-Distanz (am gebräuchlichsten für semantische Suche) -
'euclidean'- Euklidische (L2) Distanz -
'dot'- Negatives Skalarprodukt
Voraussetzungen:
-
SQL Server-Version mit aktivierter Vektorunterstützung
-
Vektordimensionen müssen mit der Option
lengthangegeben werden
Bekannte Probleme
Verbindungspool setzt Isolationslevel nicht zurück
Die Datenquellen-Optionen options.isolationLevel und options.connectionIsolationLevel werden beim ersten Erstellen einer Verbindung korrekt vom zugrundeliegenden node-mssql-Treiber angewendet. Allerdings ruft node-mssql beim Zurückgeben von Verbindungen in den Pool kein connection.reset() auf. Das bedeutet: Wenn eine Operation das Isolationslevel einer gepoolten Verbindung ändert (z.B. eine explizite Transaktion mit anderem Level), bleibt diese Änderung bestehen und wird an den nächsten Nutzer der Verbindung weitergegeben.
In der Praxis machen dies options.isolationLevel und options.connectionIsolationLevel unzuverlässig für Anwendungen, die auch transaktionsspezifische Isolationslevel verwenden.
Transaktionsspezifische Isolationslevel sind nicht betroffen. Das Setzen des Isolationslevels via startTransaction() oder transaction()-Callback funktioniert immer korrekt, da es explizit auf der aktiven Verbindung angewendet wird.
Dies ist eine Einschränkung im Upstream-Treiber, dokumentiert in tediousjs/node-mssql#1483.