SuperAPI AI 工具集

prisma-database-setup-sqlserver

编程与开发

查看项目

更新于 10-16 04:23

技能介绍

用途

该技能用于在 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 并需要配置驱动适配器的场景。资料未提供其他平台支持、收费或价格信息。