在 Visual Studio 中连接到 SQL 数据库

本文中的步骤演示如何连接到 Visual Studio IDE 中的数据源。 数据源可以是本地数据库、联机数据服务或从 .mdf 文件打开的数据库。 可以直接在 Visual Studio 中处理数据。 可以执行查询、编辑数据、创建和编辑表及其他架构属性、编辑存储过程和函数、触发器等。 这些函数独立于所使用的编程语言或 .NET 版本。

服务器资源管理器和 SQL Server 对象资源管理器

可以使用服务器资源管理器或 SQL Server 对象资源管理器打开与数据库/服务或从 .mdf 文件打开的 LocalDB 数据库的连接,以及查看和编辑表和数据行。 这些窗口的功能在一种程度上会重叠。 基本区别包括:

  • 服务器资源管理器

    默认安装在 Visual Studio 中。 可以用来测试连接,查看 SQL Server 数据库、安装了 ADO.NET 提供程序的其他数据库以及一些 Azure 服务。 还显示低级对象,例如系统性能计数器、事件日志和消息队列。 如果数据源没有 ADO.NET 提供程序,则不会显示在此处,但仍可以通过以编程方式连接来从 Visual Studio 使用它。

  • Cloud Explorer

    手动安装此窗口作为 Visual Studio Marketplace 的 Visual Studio 扩展。 提供用于浏览和连接到 Azure 服务的专用功能。

  • SQL Server 对象资源管理器

    与 SQL Server Data Tools 一起安装,并可在“视图”菜单中显示。 如果在此处没有看到安装程序,则在选中 SQL Server Data Tools 的复选框后,转到“控制面板”中的“程序和功能”,找到 Visual Studio,然后选择“更改”以重新运行安装程序。 使用 SQL Server 对象资源管理器查看 SQL 数据库(如果它们具有 ADO.NET 提供程序)、创建新的数据库、修改架构、创建存储过程、检索连接字符串、查看数据等。 未安装 ADO.NET 提供程序的 SQL 数据库不会显示在此处,但是仍可以编程方式连接到这些数据库。

可以使用服务器资源管理器或 SQL Server 对象资源管理器打开与数据库/服务或从 .mdf 文件打开的 LocalDB 数据库的连接,以及查看和编辑表和数据行。 这些窗口的功能在一种程度上会重叠。 基本区别包括:

  • 服务器资源管理器

    默认安装在 Visual Studio 中。 可以用来测试连接,查看 SQL Server 数据库、安装了 ADO.NET 提供程序的其他数据库以及一些 Azure 服务。 还显示低级对象,例如系统性能计数器、事件日志和消息队列。 如果数据源没有 ADO.NET 提供程序,则不会显示在此处,但仍可以通过以编程方式连接来从 Visual Studio 使用它。

  • SQL Server 对象资源管理器

    与 SQL Server Data Tools 一起安装,并可在“视图”菜单中显示。 如果在此处没有看到安装程序,则在选中 SQL Server Data Tools 的复选框后,转到“控制面板”中的“程序和功能”,找到 Visual Studio,然后选择“更改”以重新运行安装程序。 使用 SQL Server 对象资源管理器查看 SQL 数据库(如果它们具有 ADO.NET 提供程序)、创建新的数据库、修改架构、创建存储过程、检索连接字符串、查看数据等。 未安装 ADO.NET 提供程序的 SQL 数据库不会显示在此处,但是仍可以编程方式连接到这些数据库。

在服务器资源管理器中添加连接

若要创建与数据库的连接,请单击“服务器资源管理器”中的“连接到数据库”图标,或右键单击“数据连接”节点上的“服务器资源管理器”,然后选择“添加连接”。 在此处,可以打开与从 .mdf 文件打开的 LocalDB 数据库的连接,连接到另一台服务器上的数据库、SharePoint 服务或 Azure 服务。

显示服务器资源管理器“新建连接”图标的屏幕截图。

显示服务器资源管理器“连接到数据库”图标的屏幕截图。

这将打开“添加连接”对话框。 在这里,我们输入了 SQL Server LocalDB 实例的名称 (localdb)\MSSqlLocalDB,它通常随 Visual Studio 一起安装。

如果你无权访问另一个数据库,并且看不到已安装 LocalDB,则可以通过 Visual Studio 安装程序,作为“数据存储和处理”工作负载、“ASP.NET 和 Web 开发”工作负载的一部分或作为单个组件安装 LocalDB。 请参阅修改 Visual Studio

“添加新连接”对话框的屏幕截图。

“添加新连接”对话框的屏幕截图。

在 Visual Studio 2022 17.8 及更高版本中,该对话框包含两个新选项(“加密”和“信任服务器证书”),这些选项将进入连接字符串并影响用于连接的安全设置。 这些选项支持 Microsoft.Data.SqlClient 4.0 数据库驱动程序的更严格的安全功能。 请参阅加密和证书验证行为的更改

建议的安全做法是使用加密并在服务器上为其安装证书。 请参阅加密和证书验证。 若要选择退出这项增强的安全功能,请将“加密”设置为“可选”(False)

如果在 Visual Studio 17.8 或更高版本(使用 Microsoft.Data.SqlClient 版本 4.0)中未将“加密”设置为可选,则加密默认设置为必需。 这与早期版本中的行为相比是一项中断性变更。 如果没有有效的证书或未选择“信任服务器证书”,你将收到以下错误消息

在此连接上启用了加密,查看目标 SQL Server 的 SSL 和证书配置,或在连接对话框中启用“信任服务器证书”。

其他信息

已成功与服务器建立连接,但在登录过程中发生错误。 (提供程序:SSL 提供程序,错误:0 - 证书链是不受信任的颁发机构颁发的。)(Microsoft SQL Server)

身份验证类型

可以从涵盖各种方案的各种身份验证类型中进行选择。 有关详细信息,请参阅身份验证类型

在 Visual Studio 17.8 及更高版本中,SQL 连接的身份验证选项名称已更新,其中反映了名称从 Active Directory 更改为 Microsoft Entra。

屏幕截图显示 Visual Studio 17.8 及更高版本的身份验证类型。

打开 MDF 数据库文件

.mdf 文件代表 Master 数据库文件,是打包到文件中的 SQL 数据库。 这些文件具有关联的 .ldf(日志数据库文件),其中包含该数据库的日志。 可以通过将基于服务的数据库项添加到项目来创建存储在 .mdf 文件中的新数据库。 请参阅创建数据库并添加表

如果项目中已有 .mdf 文件,则可以双击或右键单击并选择“打开”,以在服务器资源管理器中打开该文件。

若要在 Visual Studio 的服务器资源管理器中打开不在项目中的 .mdf 文件,请执行以下步骤:

  1. 在“添加连接”对话框中的“数据源”下,选择“Microsoft SQL Server 数据库文件(SqlClient)”。

  2. 使用“浏览”按钮查找并选择主数据库文件(.mdf 文件),或在“数据库文件名”框中输入路径。

    屏幕截图显示了“添加连接”对话框,其中连接到 SQL 数据库文件。

  3. 选择身份验证方法。

  4. 测试连接,如果成功,请选择“确定”。 数据库节点将在服务器资源管理器中打开。

更改提供程序

如果该数据源不是你需要的,请单击“更改”按钮以选择新的数据源或新的 ADO.NET 数据提供程序。 新的提供程序可能会要求提供凭据,具体取决于你的配置方式。

注意

如果正在使用 Visual Studio 2022 连接到 OLEDB 或 ODBC 数据提供程序,则需要注意 Visual Studio 2022 现在是 64 位进程。

这意味着,Visual Studio 中的某些数据工具将无法使用 32 位数据提供程序连接到 OLEDB 或 ODBC 数据库。 其中包括 Microsoft Access 32 位 OLEDB 数据提供程序以及其他第三方 32 位提供程序。

如果需要维护连接到 OLEDB 或 ODBC 的 32 位应用程序,仍可以使用 Visual Studio 2022 生成并运行该应用程序。 但是,如果需要使用任何 Visual Studio 数据工具(如服务器资源管理器、数据源向导或数据集设计器),则需要使用仍为 32 位进程的 Visual Studio 的早期版本。 32 位进程的 Visual Studio 的上一版本为 Visual Studio 2019。

如果计划将项目转换为 64 位进程,则需要更新 OLEDB 和 ODBC 数据连接才能使用 64 位数据提供程序。

如果你的应用程序使用 Microsoft Access 数据库,并可以将项目转换为 64 位,则建议你使用 64 位 Microsoft Access 数据库引擎,也称为访问连接引擎 (ACE)。 有关详细信息,请参阅仅适用于 Jet 和 ODBC 驱动程序的 OLE DB 提供程序为 32 位版本

如果你使用的是第三方数据提供程序,我们建议与你的供应商取得联系,以了解他们在将项目转换为 64 位之前是否提供了 64 位提供程序。

显示如何更改 ADO.NET 数据提供程序的屏幕截图。

显示如何更改 ADO.NET 数据提供程序的屏幕截图。

测试连接

选择数据源后,单击“测试连接”。 如果测试未成功,将需要根据供应商的文档进行故障排除。

显示“测试连接成功”消息框的屏幕截图。

显示“测试连接成功”消息框的屏幕截图。

如果测试成功,则可以创建数据源,它是一个表示基于基础数据库或服务的数据模型的 Visual Studio 术语。

使用 SQL Server 对象资源管理器进行连接

如果使用 SQL Server 对象资源管理器,则体验可能会更容易,该对话框提供了一个对话框,可在本地、本地网络上和 Azure 订阅中查找可用数据库方面提供更多帮助,并提供最近使用选项的历史记录。

若要从 SQL Server 对象资源管理器访问连接对话框,请单击工具栏按钮“添加 SQL Server”。

SQL Server 对象资源管理器“添加 SQL Server”按钮的屏幕截图

此时将显示“连接”对话框。 选择本地、网络或 Azure SQL 服务器,选择数据库,提供凭据,然后选择“连接”。

SQL Server 对象资源管理器“连接”对话框的屏幕截图。

如果需要在连接字符串中设置其他设置,可以使用“高级”链接来显示所有设置。 例如,若要连接到基于 MDF 文件的 LocalDB 数据库,请选择“高级”,然后设置 AttachDbFilename 属性。

显示“高级”设置的屏幕截图。

建立连接后,服务器和数据库将显示在 SQL Server 对象资源管理器窗口中。

显示“已成功连接”消息的屏幕截图。

在此处,你可以浏览数据库、编写和执行查询、编辑数据、存储过程和函数,并直接在 Visual Studio 中执行其他操作。

后续步骤

如果使用 .NET Framework(不是 .NET Core、.NET 5 或更高版本)和 Windows 窗体或 WPF,则可以使用“数据源”窗口(例如,为 Windows 窗体和 WPF 应用程序中的控件设置数据绑定),请参阅添加新数据源。 这些工具旨在使你能够快速创建需要允许用户输入、显示和操作数据的 Windows 应用程序。

如果使用 .NET 5 或更高版本、.NET Core 或 ASP.NET Core,则可以使用连接的服务将应用连接到数据库。 使用连接的服务,可以轻松使用由 SQL LocalDB 托管的本地开发数据库、运行在容器中的 SQL Server 或 SQL Server 的本地实例,然后在准备好部署到云时转换到 Azure SQL 数据库。 对于 .NET 5 或更高版本、.NET Core 和 ASP.NET Core,应考虑使用 Entity Framework Core 作为数据库框架。