Saltar al contenido principal

Microsoft SQL Server

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Instalación

npm install mssql

Opciones de Data Source

Consulta Opciones de Origen de Datos para ver las opciones comunes de origen de datos.

Basado en la implementación MSSQL de tedious. Consulta SqlServerConnectionOptions.ts para detalles sobre los atributos expuestos.

  • url - URL de conexión donde se realiza la conexión. Ten en cuenta que otras opciones del data source sobreescribirán parámetros establecidos en la URL.

  • host - Host de la base de datos.

  • port - Puerto del host de la base de datos. El puerto predeterminado de MSSQL es 1433.

  • username - Nombre de usuario de la base de datos.

  • password - Contraseña de la base de datos.

  • database - Nombre de la base de datos.

  • schema - Nombre del esquema. Por defecto es "dbo".

  • domain - Al establecer este dominio, el controlador se conectará a SQL Server usando autenticación de dominio.

  • connectionTimeout - Tiempo de espera de conexión en ms (predeterminado: 15000).

  • requestTimeout - Tiempo de espera de solicitud en ms (predeterminado: 15000). NOTA: el controlador msnodesqlv8 no admite tiempos de espera < 1 segundo.

  • stream - Transmite conjuntos de registros/filas en lugar de devolverlos todos a la vez en el callback (predeterminado: false). También puedes habilitar streaming por solicitud independientemente (request.stream = true). Siempre configúralo como true si planeas trabajar con grandes volúmenes de filas.

  • pool.max - Número máximo de conexiones en el pool (predeterminado: 10).

  • pool.min - Número mínimo de conexiones en el pool (predeterminado: 0).

  • pool.maxWaitingClients - Máximo de solicitudes en cola permitidas; las llamadas de adquisición adicionales recibirán un error en un ciclo futuro del event loop.

  • pool.acquireTimeoutMillis - Milisegundos máximos que una llamada acquire esperará un recurso antes de agotar el tiempo (sin límite por defecto). Debe ser un entero positivo distinto de cero si se especifica.

  • pool.fifo - Si es true, los recursos más antiguos se asignarán primero. Si es false, los recursos liberados más recientemente tendrán prioridad. Esto convierte el comportamiento del pool de cola a pila. Booleano (predeterminado: true).

  • pool.priorityRange - Entero entre 1 y x. Si se establece, los solicitantes pueden especificar prioridad relativa en la cola cuando no hay recursos disponibles (ver ejemplo). Predeterminado: 1.

  • pool.evictionRunIntervalMillis - Frecuencia para ejecutar comprobaciones de expulsión (ms). Predeterminado: 0 (no se ejecuta).

  • pool.numTestsPerRun - Número de recursos a verificar en cada ejecución de expulsión. Predeterminado: 3.

  • pool.softIdleTimeoutMillis - Tiempo que un objeto puede estar inactivo antes de ser expulsable, siempre que queden al menos "min idle" instancias en el pool. Predeterminado: -1 (nada es expulsable).

  • pool.idleTimeoutMillis - Tiempo mínimo de inactividad para que un objeto sea expulsable por inactividad. Reemplaza a softIdleTimeoutMillis. Predeterminado: 30000.

  • pool.errorHandler - Función que se llama cuando el pool emite evento 'error'. Recibe un parámetro (instancia de error) y por defecto registra con nivel warn.

  • options.fallbackToDefaultDb - Por defecto, si la base de datos solicitada en options.database es inaccesible, la conexión fallará. Si options.fallbackToDefaultDb se establece en true, entonces se usará la base de datos predeterminada del usuario (Predeterminado: false).

  • options.instanceName - Nombre de la instancia a conectar. Requiere que el servicio SQL Server Browser esté activo y el puerto UDP 1434 accesible. Excluyente con port (sin valor predeterminado).

  • options.enableAnsiNullDefault - Si es true, se establecerá SET ANSI_NULL_DFLT_ON ON en el SQL inicial. Esto significa que las nuevas columnas serán anulables por defecto. Consulta la documentación de T-SQL para más detalles. (Valor predeterminado: true).

  • options.cancelTimeout - Número de milisegundos antes de que la cancelación (aborto) de una solicitud se considere fallida (valor predeterminado: 5000).

  • options.packetSize - Tamaño de los paquetes TDS (sujeto a negociación con el servidor). Debe ser una potencia de 2. (valor predeterminado: 4096).

  • options.useUTC - Booleano que determina si los valores de tiempo se pasan en UTC o hora local. (valor predeterminado: false).

  • options.abortTransactionOnError - Booleano que determina si se revertirá automáticamente una transacción si se encuentra cualquier error durante su ejecución. Establece el valor para SET XACT_ABORT durante la fase SQL inicial de una conexión (documentación).

  • options.localAddress - Cadena que indica qué interfaz de red (dirección IP) usar al conectarse a SQL Server.

  • options.useColumnNames - Booleano que determina si se devuelven las filas como arreglos o colecciones clave-valor. (valor predeterminado: false).

  • options.camelCaseColumns - Booleano que controla si los nombres de columna devueltos tendrán la primera letra convertida a minúscula (true) o no. Este valor se ignora si se proporciona un columnNameReplacer. (valor predeterminado: false).

  • options.isolationLevel - Nivel de aislamiento predeterminado para las transacciones. Los niveles están disponibles en require('tedious').ISOLATION_LEVEL.

    • READ_UNCOMMITTED
    • READ_COMMITTED
    • REPEATABLE_READ
    • SERIALIZABLE
    • SNAPSHOT

    (valor predeterminado: READ_COMMITTED)

  • options.connectionIsolationLevel - Nivel de aislamiento predeterminado para nuevas conexiones. Todas las consultas fuera de transacción se ejecutan con esta configuración. Los niveles están disponibles en require('tedious').ISOLATION_LEVEL.

    • READ_UNCOMMITTED
    • READ_COMMITTED
    • REPEATABLE_READ
    • SERIALIZABLE
    • SNAPSHOT

    (valor predeterminado: READ_COMMITTED)

  • options.readOnlyIntent - Booleano que determina si la conexión solicitará acceso de solo lectura a un Grupo de Disponibilidad de SQL Server. Para más información, consulta aquí. (valor predeterminado: false).

  • options.encrypt - Booleano que determina si la conexión se cifrará. Establece true si estás en Windows Azure. (valor predeterminado: true).

  • options.cryptoCredentialsDetails - Cuando se usa cifrado, se puede proporcionar un objeto que servirá como primer argumento al llamar a tls.createSecurePair (valor predeterminado: {}).

  • options.rowCollectionOnDone - Booleano que, cuando es true, expone las filas recibidas en los eventos done* de las Solicitudes. Ver done, doneInProc y doneProc. (valor predeterminado: false)

    Precaución: Si se reciben muchas filas, habilitar esta opción puede causar uso excesivo de memoria.

  • options.rowCollectionOnRequestCompletion - Booleano que, cuando es true, expone las filas recibidas en la devolución de llamada de finalización de Solicitudes. Ver new Request. (valor predeterminado: false)

    Precaución: Si se reciben muchas filas, habilitar esta opción puede causar uso excesivo de memoria.

  • options.tdsVersion - La versión de TDS a utilizar. Si el servidor no admite la versión especificada, se usa una versión negociada. Las versiones disponibles están en require('tedious').TDS_VERSION.

    • 7_1
    • 7_2
    • 7_3_A
    • 7_3_B
    • 7_4 (predeterminado: 7_4)
  • options.appName - Nombre de la aplicación usado para identificar una aplicación específica en herramientas de perfilado, registro o trazabilidad de SQL Server (predeterminado: node-mssql).

  • options.trustServerCertificate - Booleano que controla si ocurre cifrado cuando no hay un certificado de servidor verificable (predeterminado: false).

  • options.multiSubnetFailover - Booleano que controla si el controlador debe conectarse a todas las IP devueltas por DNS en paralelo (predeterminado: false).

  • options.debug.packet - Booleano que controla si se emitirán eventos debug con texto describiendo detalles de paquetes (predeterminado: false).

  • options.debug.data - Booleano que controla si se emitirán eventos debug con texto describiendo detalles de datos de paquetes (predeterminado: false).

  • options.debug.payload - Booleano que controla si se emitirán eventos debug con texto describiendo detalles de la carga útil de paquetes (predeterminado: false).

  • options.debug.token - Booleano que controla si se emitirán eventos debug con texto describiendo tokens del flujo de tokens (predeterminado: false).

Tipos de Columna

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 Vector (vector)

El tipo de dato vector está disponible en SQL Server para almacenar vectores de alta dimensión, comúnmente usado para:

  • Búsqueda semántica con embeddings

  • Sistemas de recomendación

  • Coincidencia de similitud

  • Aplicaciones de machine learning

NOTA: el soporte general para el tipo halfvec no está disponible porque esta característica aún está en vista previa. Consulta la documentación de Microsoft: Tipo de dato vector.

Uso

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

@Column("varchar")
content: string

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

Búsqueda de Similitud Vectorial

SQL Server proporciona la función VECTOR_DISTANCE para calcular distancias entre vectores:

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

Métricas de Distancia:

  • 'cosine' - Distancia coseno (más común para búsqueda semántica)

  • 'euclidean' - Distancia euclidiana (L2)

  • 'dot' - Producto punto negativo

Requisitos:

  • Versión de SQL Server con soporte para vectores habilitado

  • Las dimensiones del vector deben especificarse usando la opción length