# MS SQL (/docs/adapters/mssql)

将 Better Auth 与 MS SQL 集成。



Microsoft SQL Server 是由 Microsoft 开发的关系型数据库管理系统，专为企业级数据存储、管理和分析而设计，具备强大的安全性和可扩展性特性。
了解更多关于 [Microsoft SQL Server](https://en.wikipedia.org/wiki/Microsoft_SQL_Server)。

## 示例用法 [#示例用法]

确保您已经安装并配置好 MS SQL。
然后，您可以将它直接连接到 Better Auth。

```ts title="auth.ts"
import { betterAuth } from "better-auth";
import { MssqlDialect } from "kysely";
import * as Tedious from 'tedious'
import * as Tarn from 'tarn'

const dialect = new MssqlDialect({
  tarn: {
    ...Tarn,
    options: {
      min: 0,
      max: 10,
    },
  },
  tedious: {
    ...Tedious,
    connectionFactory: () => new Tedious.Connection({
      authentication: {
        options: {
          password: 'password',
          userName: 'username',
        },
        type: 'default',
      },
      options: {
        database: 'some_db',
        port: 1433,
        trustServerCertificate: true,
      },
      server: 'localhost',
    }),
  },
  TYPES: {
		...Tedious.TYPES,
		DateTime: Tedious.TYPES.DateTime2,
	},
})

export const auth = betterAuth({
  database: {
    dialect,
    type: "mssql"
  }
});


```

<Callout>
  更多信息，请阅读 Kysely 的文档中关于 [MssqlDialect](https://kysely-org.github.io/kysely-apidoc/classes/MssqlDialect.html) 的内容。
</Callout>

## 架构生成与迁移 [#架构生成与迁移]

[Better Auth CLI](/docs/concepts/cli) 允许你基于 Better Auth 的配置和插件生成或迁移你的数据库架构。

<table>
  <thead>
    <tr className="border-b">
      <th>
        <p className="font-bold text-[16px] mb-1">
          MS SQL 架构生成
        </p>
      </th>

      <th>
        <p className="font-bold text-[16px] mb-1">
          MS SQL 架构迁移
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr className="h-10">
      <td>
        ✅ 支持
      </td>

      <td>
        ✅ 支持
      </td>
    </tr>
  </tbody>
</table>

<Tabs items="[&#x22;migrate&#x22;, &#x22;generate&#x22;]">
  <Tab value="migrate">
    <CodeBlockTabs defaultValue="npm" groupId="persist-install">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="npm">
          npm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="pnpm">
          pnpm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="yarn">
          yarn
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="bun">
          bun
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="npm">
        ```bash
        npx auth@latest migrate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="pnpm">
        ```bash
        pnpm dlx auth@latest migrate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="yarn">
        ```bash
        yarn dlx auth@latest migrate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="bun">
        ```bash
        bun x auth@latest migrate
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Tab>

  <Tab value="generate">
    <CodeBlockTabs defaultValue="npm" groupId="persist-install">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="npm">
          npm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="pnpm">
          pnpm
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="yarn">
          yarn
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="bun">
          bun
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="npm">
        ```bash
        npx auth@latest generate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="pnpm">
        ```bash
        pnpm dlx auth@latest generate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="yarn">
        ```bash
        yarn dlx auth@latest generate
        ```
      </CodeBlockTab>

      <CodeBlockTab value="bun">
        ```bash
        bun x auth@latest generate
        ```
      </CodeBlockTab>
    </CodeBlockTabs>
  </Tab>
</Tabs>

## 连接 [#连接]

当 Better-Auth 需要在单个查询中从多个表获取相关数据时，数据库连接非常有用。
`/get-session`、`/get-full-organization` 等端点都能从此功能中大幅受益，
根据数据库延迟的不同，性能提升可达 2 倍至 3 倍。

Kysely 的 MS SQL 方言从 `1.4.0` 版本开始开箱即用地支持连接。
要启用此功能，请在你的 auth 配置中将 `advanced.database.joins` 设置为 `true`。

```ts title="auth.ts"
import { betterAuth } from "better-auth";

export const auth = betterAuth({
  advanced: {
    database: {
      joins: true,
    },
  },
});
```

## 附加信息 [#附加信息]

MS SQL 是通过 [Kysely](https://kysely.dev/) 适配器在底层支持的，Kysely 支持的任何数据库也都将得到支持。 (<Link href="/docs/adapters/other-relational-databases">阅读更多</Link>)

如果您想了解性能提升或优化技巧，请查看我们的 <Link href="/docs/guides/optimizing-for-performance">性能优化指南</Link>。

