Vai al contenuto principale

Microsoft SQL Server

Traduzione Beta Non Ufficiale

Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →

Installazione

npm install mssql

Opzioni Data Source

Consulta Opzioni del Data Source per le opzioni comuni dei data source.

Basato sull'implementazione MSSQL tedious. Vedi SqlServerConnectionOptions.ts per i dettagli sugli attributi esposti.

  • url - URL di connessione dove viene stabilita la connessione. Si noti che altre opzioni del data source sovrascriveranno i parametri impostati tramite l'URL.

  • host - Host del database.

  • port - Porta dell'host del database. La porta predefinita per MSSQL è 1433.

  • username - Nome utente del database.

  • password - Password del database.

  • database - Nome del database.

  • schema - Nome dello schema. Il valore predefinito è "dbo".

  • domain - Se impostato, il driver si connetterà a SQL Server utilizzando l'autenticazione di dominio.

  • connectionTimeout - Timeout di connessione in ms (predefinito: 15000).

  • requestTimeout - Timeout della richiesta in ms (predefinito: 15000). NOTA: il driver msnodesqlv8 non supporta timeout inferiori a 1 secondo.

  • stream - Trasmette in flusso i recordset/righe invece di restituirli tutti insieme come argomento della callback (predefinito: false). È possibile abilitare lo streaming per ogni richiesta indipendentemente (request.stream = true). Impostare sempre su true se si prevede di lavorare con un numero elevato di righe.

  • pool.max - Numero massimo di connessioni nel pool (predefinito: 10).

  • pool.min - Numero minimo di connessioni nel pool (predefinito: 0).

  • pool.maxWaitingClients - Numero massimo di richieste accodate consentite. Le chiamate di acquisizione aggiuntive riceveranno un errore in un ciclo successivo dell'event loop.

  • pool.acquireTimeoutMillis - Millisecondi massimi di attesa per una risorsa prima che una chiamata acquire scada (predefinito: nessun limite). Se fornito, deve essere un intero positivo diverso da zero.

  • pool.fifo - Se true, le risorse più vecchie verranno allocate per prime. Se false, le risorse rilasciate più di recente verranno allocate per prime. Questo trasforma il comportamento del pool da coda a stack. Booleano, (predefinito true).

  • pool.priorityRange - Intero compreso tra 1 e x. Se impostato, i richiedenti possono specificare la priorità relativa nella coda quando non ci sono risorse disponibili (predefinito: 1).

  • pool.evictionRunIntervalMillis - Frequenza dei controlli di rimozione in ms (predefinito: 0 - disattivato).

  • pool.numTestsPerRun - Numero di risorse da controllare in ogni esecuzione di rimozione (predefinito: 3).

  • pool.softIdleTimeoutMillis - Tempo massimo di inattività di un oggetto nel pool prima di essere rimosso, purché rimangano almeno "min idle" istanze nel pool (predefinito: -1 - nessuna rimozione).

  • pool.idleTimeoutMillis - Tempo minimo di inattività di un oggetto nel pool prima di essere rimosso per inattività. Sostituisce softIdleTimeoutMillis (predefinito: 30000).

  • pool.errorHandler - Funzione chiamata quando il pool sottostante emette un evento 'error'. Accetta un singolo parametro (istanza di errore) e per default registra con livello warn.

  • options.fallbackToDefaultDb - Se il database richiesto da options.database non è accessibile, la connessione fallirà con errore. Tuttavia, se options.fallbackToDefaultDb è impostato su true, verrà invece utilizzato il database predefinito dell'utente (predefinito: false).

  • options.instanceName - Nome dell'istanza a cui connettersi. Richiede che il servizio SQL Server Browser sia attivo e che la porta UDP 1434 sia raggiungibile. Mutuamente esclusivo con port (nessun default).

  • options.enableAnsiNullDefault - Se true, verrà impostato SET ANSI_NULL_DFLT_ON ON nello SQL iniziale. Ciò significa che le nuove colonne saranno nullable per impostazione predefinita. Consulta la documentazione T-SQL per maggiori dettagli. (Default: true).

  • options.cancelTimeout - Numero di millisecondi prima che l'annullamento (abort) di una richiesta venga considerato fallito (default: 5000).

  • options.packetSize - Dimensione dei pacchetti TDS (soggetta a negoziazione con il server). Deve essere una potenza di 2 (default: 4096).

  • options.useUTC - Valore booleano che determina se passare i valori temporali in UTC o nell'ora locale (default: false).

  • options.abortTransactionOnError - Valore booleano che determina se eseguire il rollback automatico di una transazione in caso di errori durante la sua esecuzione. Imposta il valore per SET XACT_ABORT durante la fase SQL iniziale di una connessione (documentazione).

  • options.localAddress - Stringa che indica quale interfaccia di rete (indirizzo IP) utilizzare per connettersi a SQL Server.

  • options.useColumnNames - Valore booleano che determina se restituire le righe come array o come raccolte chiave-valore (default: false).

  • options.camelCaseColumns - Valore booleano che controlla se i nomi delle colonne restituiti avranno la prima lettera convertita in minuscolo (true) o meno. Questo valore viene ignorato se si fornisce un columnNameReplacer (default: false).

  • options.isolationLevel - Livello di isolamento predefinito per le transazioni. I livelli sono disponibili tramite require('tedious').ISOLATION_LEVEL:

    • READ_UNCOMMITTED
    • READ_COMMITTED
    • REPEATABLE_READ
    • SERIALIZABLE
    • SNAPSHOT

    (default: READ_COMMITTED)

  • options.connectionIsolationLevel - Livello di isolamento predefinito per nuove connessioni. Tutte le query fuori transazione utilizzano questa impostazione. Livelli disponibili tramite require('tedious').ISOLATION_LEVEL:

    • READ_UNCOMMITTED
    • READ_COMMITTED
    • REPEATABLE_READ
    • SERIALIZABLE
    • SNAPSHOT

    (default: READ_COMMITTED)

  • options.readOnlyIntent - Valore booleano che determina se la connessione richiederà accesso in sola lettura da un SQL Server Availability Group (default: false).

  • options.encrypt - Valore booleano che determina se la connessione sarà crittografata. Impostare true per Windows Azure (default: true).

  • options.cryptoCredentialsDetails - Quando è attiva la crittografia, può essere fornito un oggetto da utilizzare come primo argomento per tls.createSecurePair (default: {}).

  • options.rowCollectionOnDone - Valore booleano che, se true, espone le righe ricevute negli eventi done* delle Request. Vedi done, doneInProc e doneProc (default: false).

    Attenzione: Con molte righe ricevute, questa opzione può causare elevato utilizzo di memoria.

  • options.rowCollectionOnRequestCompletion - Valore booleano che, se true, espone le righe ricevute nella callback di completamento delle Request. Vedi new Request (default: false).

    Attenzione: Con molte righe ricevute, questa opzione può causare elevato utilizzo di memoria.

  • options.tdsVersion - Versione TDS da utilizzare. Se il server non supporta la versione specificata, verrà negoziata una versione alternativa. Le versioni sono disponibili in require('tedious').TDS_VERSION.

    • 7_1
    • 7_2
    • 7_3_A
    • 7_3_B
    • 7_4

    (predefinito: 7_4)

  • options.appName - Nome dell'applicazione utilizzato per identificare una specifica applicazione negli strumenti di profilazione, logging o tracciamento di SQL Server. (predefinito: node-mssql)

  • options.trustServerCertificate - Valore booleano che controlla se la crittografia deve avvenire senza un certificato server verificabile. (predefinito: false)

  • options.multiSubnetFailover - Valore booleano che controlla se il driver deve connettersi a tutti gli IP restituiti dal DNS in parallelo. (predefinito: false)

  • options.debug.packet - Valore booleano che controlla se gli eventi debug includeranno testo descrittivo dei dettagli dei pacchetti (predefinito: false).

  • options.debug.data - Valore booleano che controlla se gli eventi debug includeranno testo descrittivo dei dettagli dei dati dei pacchetti (predefinito: false).

  • options.debug.payload - Valore booleano che controlla se gli eventi debug includeranno testo descrittivo dei dettagli del payload dei pacchetti (predefinito: false).

  • options.debug.token - Valore booleano che controlla se gli eventi debug includeranno testo descrittivo dei token dello stream di token (predefinito: false).

Tipi di Colonna

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

Tipo Vettoriale (vector)

Il tipo di dato vector in SQL Server memorizza vettori ad alta dimensionalità, comunemente utilizzati per:

  • Ricerca semantica con embedding

  • Sistemi di raccomandazione

  • Matching di similarità

  • Applicazioni di machine learning

NOTA: il supporto generale per il tipo halfvec non è disponibile poiché questa funzionalità è ancora in anteprima. Consulta la documentazione Microsoft: Tipo di dato vettoriale.

Utilizzo

@Entity()
export class DocumentChunk {
@PrimaryGeneratedColumn()
id: number

@Column("varchar")
content: string

// Vector column with 1998 dimensions
@Column("vector", { length: 1998 })
embedding: number[]
}

Ricerca di similarità vettoriale

SQL Server fornisce la funzione VECTOR_DISTANCE per calcolare le distanze tra vettori:

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)],
)

Metriche di distanza:

  • 'cosine' - Distanza coseno (più comune per la ricerca semantica)

  • 'euclidean' - Distanza euclidea (L2)

  • 'dot' - Prodotto scalare negativo

Requisiti:

  • Versione di SQL Server con supporto vettoriale abilitato

  • Le dimensioni dei vettori devono essere specificate tramite l'opzione length