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_UNCOMMITTEDREAD_COMMITTEDREPEATABLE_READSERIALIZABLESNAPSHOT
(默认值:
READ_COMMITTED) -
options.connectionIsolationLevel- 新连接的默认隔离级别。所有非事务查询均使用此设置。可选值来自require('tedious').ISOLATION_LEVEL:READ_UNCOMMITTEDREAD_COMMITTEDREPEATABLE_READSERIALIZABLESNAPSHOT
(默认值:
READ_COMMITTED) -
options.readOnlyIntent- 布尔值,决定连接是否向 SQL Server 可用性组请求只读访问权限(详见相关文档)(默认值:false)。 -
options.encrypt- 布尔值,决定是否加密连接。在 Windows Azure 环境应设为 true(默认值:true)。 -
options.cryptoCredentialsDetails- 启用加密时,可 提供此对象作为调用 tls.createSecurePair 的首个参数(默认值:{})。 -
options.rowCollectionOnDone- 布尔值,设为 true 时将在请求的done*事件中暴露接收到的行数据。参见 done、doneInProc 和 doneProc(默认值:false)。警告:若接收大量行数据,启用此选项可能导致内存占用过高。
-
options.rowCollectionOnRequestCompletion- 布尔值,设为 true 时将在请求完成回调中暴露接收到的行数据。参见 new Request(默认值:false)。警告:若接收大量行数据,启用此选项可能导致内存占用过高。
-
options.tdsVersion- 指定使用的 TDS 版本。若服务器不支持指定版本,则会协商使用兼容版本。可用版本可通过require('tedious').TDS_VERSION获取:7_17_27_3_A7_3_B7_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选项指定向量维度