Перейти к основному содержанию

Microsoft SQL Server

Неофициальный Бета-перевод

Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →

Установка

npm install mssql

Параметры источника данных

См. Параметры источника данных для общих опций источника данных.

Основано на реализации MSSQL tedious. Подробности о доступных атрибутах см. в SqlServerConnectionOptions.ts.

  • url - URL подключения. Обратите внимание: другие параметры источника данных имеют приоритет над параметрами, заданными в URL.

  • host - Хост базы данных.

  • port - Порт хоста базы данных. Стандартный порт MSSQL — 1433.

  • username - Имя пользователя базы данных.

  • password - Пароль базы данных.

  • database - Имя базы данных.

  • schema - Название схемы. По умолчанию "dbo".

  • domain - При установке этого параметра драйвер подключится к SQL Server используя доменную аутентификацию.

  • connectionTimeout - Таймаут подключения в мс (по умолчанию: 15000).

  • requestTimeout - Таймаут запроса в мс (по умолчанию: 15000). ВАЖНО: драйвер msnodesqlv8 не поддерживает таймауты < 1 секунды.

  • stream - Потоковая передача наборов записей/строк вместо единовременного возврата через колбэк (по умолчанию: false). Также можно включать потоковый режим для отдельных запросов (request.stream = true). Всегда устанавливайте true при работе с большими объемами данных.

  • pool.max - Максимальное количество соединений в пуле (по умолчанию: 10).

  • pool.min - Минимальное количество соединений в пуле (по умолчанию: 0).

  • pool.maxWaitingClients - Максимальное разрешенное количество запросов в очереди. Дополнительные вызовы acquire будут отклонены с ошибкой в следующем цикле событий.

  • pool.acquireTimeoutMillis - Максимальное время ожидания ресурса для вызова acquire (в мс). По умолчанию без ограничений. При указании должно быть положительным целым числом.

  • pool.fifo - При true первыми выделяются самые старые ресурсы. При false — последние освобожденные ресурсы (превращает поведение пула из очереди в стек). Логическое значение (по умолчанию true).

  • pool.priorityRange - Целое число от 1 до X. Если задано, клиенты могут указывать приоритет в очереди при отсутствии ресурсов (см. пример). По умолчанию 1.

  • pool.evictionRunIntervalMillis - Интервал проверки на вытеснение ресурсов (в мс). По умолчанию 0 (проверки отключены).

  • pool.numTestsPerRun - Количество ресурсов для проверки за одну итерацию вытеснения. По умолчанию 3.

  • pool.softIdleTimeoutMillis - Время бездействия объекта в пуле до возможности его вытеснения сборщиком неактивных объектов (если применимо), с дополнительным условием сохранения как минимум "min idle" экземпляров объектов в пуле. По умолчанию -1 (вытеснение отключено).

  • pool.idleTimeoutMillis - Минимальное время бездействия ресурса перед вытеснением по таймауту (в мс). Имеет приоритет над softIdleTimeoutMillis. По умолчанию 30000.

  • pool.errorHandler - Функция, вызываемая при событии 'error' в пуле. Принимает экземпляр ошибки. По умолчанию — логирование с уровнем warn.

  • options.fallbackToDefaultDb - По умолчанию при недоступности базы данных из options.database подключение завершится ошибкой. При установке параметра options.fallbackToDefaultDb в true будет использоваться база данных по умолчанию пользователя (по умолчанию: false).

  • options.instanceName - Имя экземпляра для подключения. Требует запущенной службы SQL Server Browser и доступности UDP-порта 1434 на сервере. Взаимоисключается с параметром port. (без значения по умолчанию).

  • options.enableAnsiNullDefault - Если true, при инициализации SQL будет установлено SET ANSI_NULL_DFLT_ON ON, что означает создание новых колонок с поддержкой NULL по умолчанию. Подробности см. в документации T-SQL (По умолчанию: true).

  • options.cancelTimeout - Время в миллисекундах до сбоя при отмене (прерывании) запроса (по умолчанию: 5000).

  • options.packetSize - Размер пакетов TDS (подлежит согласованию с сервером). Должен быть степенью числа 2 (по умолчанию: 4096).

  • options.useUTC - Определяет передачу временных значений в формате UTC (true) или локального времени (false) (по умолчанию: false).

  • options.abortTransactionOnError - Определяет автоматический откат транзакции при возникновении ошибок во время её выполнения. Устанавливает значение SET XACT_ABORT на этапе инициализации соединения (документация).

  • options.localAddress - Сетевой интерфейс (IP-адрес) для подключения к SQL Server.

  • options.useColumnNames - Логическое значение, определяющее формат возврата строк: массивы (false) или коллекции ключ-значение (true). (по умолчанию: false).

  • options.camelCaseColumns - Преобразовывает первую букву названий колонок в нижний регистр (true). Игнорируется при наличии columnNameReplacer (по умолчанию: false).

  • options.isolationLevel - Уровень изоляции транзакций по умолчанию. Уровни изоляции доступны через require('tedious').ISOLATION_LEVEL.

    • READ_UNCOMMITTED
    • READ_COMMITTED
    • REPEATABLE_READ
    • SERIALIZABLE
    • SNAPSHOT (по умолчанию: READ_COMMITTED)
  • options.connectionIsolationLevel - Уровень изоляции по умолчанию для новых соединений. Все запросы вне транзакций выполняются с этим уровнем. Уровни изоляции доступны через require('tedious').ISOLATION_LEVEL.

    • READ_UNCOMMITTED
    • READ_COMMITTED
    • REPEATABLE_READ
    • SERIALIZABLE
    • SNAPSHOT (по умолчанию: READ_COMMITTED)
  • options.readOnlyIntent - Запрашивает доступ только для чтения из группы доступности SQL Server (по умолчанию: false).

  • options.encrypt - Включает шифрование соединения. Обязательно для Windows Azure (по умолчанию: true).

  • options.cryptoCredentialsDetails - Объект конфигурации шифрования, передаваемый первым аргументом в tls.createSecurePair (по умолчанию: {}).

  • options.rowCollectionOnDone - Возвращает полученные строки в событиях done* объекта Request (done, doneProc) (по умолчанию: false).

    ⚠️ Внимание: При большом количестве строк может привести к чрезмерному потреблению памяти.

  • options.rowCollectionOnRequestCompletion - Возвращает полученные строки в коллбэке завершения Request (new Request) (по умолчанию: false).

    ⚠️ Внимание: При большом количестве строк может привести к чрезмерному потреблению памяти.

  • options.tdsVersion - Версия протокола TDS для использования. Если сервер не поддерживает указанную версию, будет согласована совместимая версия. Доступные версии: require('tedious').TDS_VERSION.

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

    (по умолчанию: 7_4)

  • options.appName - Название приложения для идентификации в инструментах профилирования, логирования или трассировки SQL Server. (по умолчанию: node-mssql)

  • options.trustServerCertificate - Логическое значение, определяющее шифрование соединения при отсутствии верифицируемого сертификата сервера. (по умолчанию: false)

  • options.multiSubnetFailover - Логическое значение, определяющее параллельное подключение ко всем IP-адресам, полученным из DNS. (по умолчанию: false)

  • options.debug.packet - Логическое значение, определяющее генерацию событий debug с детализацией пакетов. (по умолчанию: false).

  • options.debug.data - Логическое значение, определяющее генерацию событий debug с детализацией данных пакетов. (по умолчанию: false).

  • options.debug.payload - Логическое значение, определяющее генерацию событий debug с детализацией содержимого пакетов. (по умолчанию: false).

  • options.debug.token - Логическое значение, определяющее генерацию событий debug с описанием токенов потока. (по умолчанию: false).

Типы столбцов

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

Тип Vector (vector)

Тип данных vector доступен в SQL Server для хранения многомерных векторов и обычно используется для:

  • Семантический поиск с использованием эмбеддингов

  • Рекомендательные системы

  • Поиск по сходству

  • Машинное обучение

ПРИМЕЧАНИЕ: общая поддержка типа halfvec недоступна, так как эта функция всё ещё находится на этапе предварительного просмотра. См. документацию Microsoft: Тип данных vector.

Использование

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

@Column("varchar")
content: string

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

Поиск по векторному сходству

SQL Server предоставляет функцию VECTOR_DISTANCE для вычисления расстояний между векторами:

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

Метрики расстояния:

  • 'cosine' - Косинусное расстояние (наиболее распространено для семантического поиска)

  • 'euclidean' - Евклидово расстояние (L2)

  • 'dot' - Негативное скалярное произведение

Требования:

  • Версия SQL Server с поддержкой векторных операций

  • Размерность векторов должна указываться через опцию length