跳至主内容区

Microsoft SQL Server

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

安装

npm install mssql

数据源选项

通用数据源选项请参见数据源选项

基于 tedious 的 MSSQL 实现。暴露属性详情请参考 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 - 允许排队的最大请求数,超出此限制的获取调用将在事件循环的后续周期返回错误。

  • 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。这意味着新建列默认可为空。详见 T-SQL 文档(默认值:true)。

  • options.cancelTimeout - 请求取消(中止)操作被视为失败前的等待毫秒数(默认值:5000)。

  • options.packetSize - TDS 数据包大小(需与服务器协商确定)。应为 2 的幂次方(默认值:4096)。

  • options.useUTC - 布尔值,决定是否以 UTC 时间格式传递时间值(默认值:false)。

  • options.abortTransactionOnError - 布尔值,决定事务执行期间遇到错误时是否自动回滚。该选项会在连接初始 SQL 阶段设置 SET XACT_ABORT 的值(详见文档)。

  • options.localAddress - 字符串,指定连接 SQL Server 时使用的网络接口(IP 地址)。

  • options.useColumnNames - 布尔值,决定返回行数据时使用数组格式还是键值对集合格式(默认值: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(默认值:true)。

  • options.cryptoCredentialsDetails - 启用加密时,可提供此对象作为调用 tls.createSecurePair 的首个参数(默认值:{})。

  • options.rowCollectionOnDone - 布尔值,设为 true 时将在请求的 done* 事件中暴露接收到的行数据。参见 done、doneInProcdoneProc(默认值:false)。

    警告:若接收大量行数据,启用此选项可能导致内存占用过高。

  • options.rowCollectionOnRequestCompletion - 布尔值,设为 true 时将在请求完成回调中暴露接收到的行数据。参见 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 - 布尔值,控制驱动程序是否应并行连接 DNS 返回的所有 IP 地址(默认值: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 数据类型在 SQL Server 中用于存储高维向量,主要应用于:

  • 嵌入向量的语义搜索

  • 推荐系统

  • 相似性匹配

  • 机器学习应用

注意:由于此功能仍处于预览阶段,暂不支持通用 halfvec 类型。详见 Microsoft 文档:向量数据类型

用法

@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 选项指定向量维度