用途
该技能用于在 Prisma 中配置 Microsoft SQL Server 数据源,作为使用该 Prisma 功能时的参考。
前置条件
- SQL Server 2017、2019、2022 或 Azure SQL
- 已启用 TCP/IP
主要配置
1. Schema 配置
在 prisma/schema.prisma 中:
datasource db {
provider = "sqlserver"
}
generator client {
provider = "prisma-client"
output = "../generated"
}
2. Config 配置(v7)
在 prisma.config.ts 中:
import { defineConfig, env } from 'prisma/config'
export default defineConfig({
schema: 'prisma/schema.prisma',
datasource: {
url: env('DATABASE_URL'),
},
})
3. 环境变量
在 .env 中:
DATABASE_URL="sqlserver://localhost:1433;database=mydb;user=sa;password=Password123;encrypt=true;trustServerCertificate=true"
连接字符串格式:
sqlserver://HOST:PORT;database=DB;user=USER;password=PASS;encrypt=true;trustServerCertificate=true
encrypt:Azure 环境必需(true)。trustServerCertificate:自签名证书(本地开发)时为 true。
驱动适配器(需要 Prisma ORM 7)
Prisma ORM 7 默认使用查询编译器,因此必须使用驱动适配器。
安装适配器与驱动:
npm install @prisma/adapter-mssql mssql
使用适配器实例化 Prisma Client:
import 'dotenv/config'
import { PrismaClient } from '../generated/client'
import { PrismaMssql } from '@prisma/adapter-mssql'
const adapter = new PrismaMssql({
server: 'localhost',
port: 1433,
database: 'mydb',
user: process.env.SQLSERVER_USER,
password: process.env.SQLSERVER_PASSWORD,
options: {
encrypt: true,
trustServerCertificate: true,
},
})
const prisma = new PrismaClient({ adapter })
常见问题
“Login failed for user”
- SQL Server 身份验证与 Windows 身份验证的区别。Prisma 通常使用 SQL Server 身份验证(用户名/密码)。
- 确保在 SQL Server Configuration Manager 中启用了 TCP/IP。
“Table not found”(dbo 架构)
Prisma 默认假定使用 dbo 架构。如果使用其他架构,需更新模型或连接字符串?SQL Server provider 大多沿用默认架构。
适用场景与限制
适用于需要在 Prisma 项目中接入 SQL Server 或 Azure SQL 的开发者,尤其是使用 Prisma ORM 7 并需要配置驱动适配器的场景。资料未提供其他平台支持、收费或价格信息。