不确定数据库连接是不是存在

Posted

技术标签:

【中文标题】不确定数据库连接是不是存在【英文标题】:Unsure if database connection exists不确定数据库连接是否存在 【发布时间】:2021-02-08 18:31:14 【问题描述】:

我有一个 C# 应用程序,它连接到在 SQL Server Express 上运行的本地数据库。应用程序应生成表。

我的 appsettings.json 中有以下内容:

"ConnectionStrings": 
    "VHDatabase": "Server=(localDb)\\SQLEXPRESS;AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL15.SQLEXPRESS\\MSSQL\\DATA\\VHDatabase.mdf;Database=VHDatabase;Trusted_Connection=True;MultipleActiveResultSets=true;Integrated Security=true;User Instance=true;"
  

在我的 startup.cs 中通过此连接完成:

var connection = Configuration.GetConnectionString("VRHitDatabase");
services.AddDbContext<VHContext>
    (options => options.UseSqlServer(connection));

当我运行应用程序时,没有创建任何表,并且我看不到任何存在连接的证据。有什么办法可以做到这一点,或者至少确认我的连接字符串是正确的??

【问题讨论】:

字符串不匹配 - appsettings 中的 VHDatabase 与 startup.cs 中的 VRHitDatabase 你不应该在同一个连接字符串中同时使用 Server 和 AttachDb。 AttachDb 意味着当您没有服务器并且仅读取 uisng 一个 MDF 文件时。当 MDF 文件已附加到数据库时,在连接字符串中使用一个服务器。您的连接字符串具有“Integrated Security=true”,这意味着您正在使用 Windows 凭据。我会使用 SQL Server Management Studio 来测试您的连接。在登录页面上使用 Windows 凭据并检查您是否可以连接到服务器。登录后使用资源管理器并验证数据库 VHDatabase 是否被列为数据库之一。 what's the issue with AttachDbFilename 【参考方案1】:

您连接到用户实例

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/sql-server-express-user-instances

用户实例是由父实例生成的 SQL Server Express 数据库引擎的单独实例。用户实例允许在其本地计算机上不是管理员的用户附加和连接到 SQL Server Express 数据库。每个实例在单个用户的安全上下文下运行,每个用户一个实例

如果您连接到普通实例,您将能够通过在程序运行时运行sp_who 存储过程或在连接打开后处于制动点来查看连接列表。

How do I see active SQL Server connections?

【讨论】:

sp_who 显示只有我在 SSMS 中的连接。我的应用程序似乎没有连接。

以上是关于不确定数据库连接是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

mysql连接 并且判断数据库是不是存在

连接SQL SERVER数据库提示不存在或访问被拒绝

JAVA建立连接后如何检查数据库是不是存在

在线等。。PHPSTUDY数据库连接失败,请检查所填参数是不是正确!

公司电脑无法连接数据库:错误提示:SQLSTATE = 08001

mysql怎么判断数据库是不是存在,表是不是存在