如何在Visual Studio Server Explorer中连接到LocalDB?

268

在搜索了一个小时后,我简直不敢相信自己找不到解决方案。我正在按照这篇文章学习使用Entity Framework 6.0中的Code First。我创建了项目,并为其安装了最新的EF Nuget包以使项目编译通过。我还验证了我已经安装了Microsoft SQL Server 2012 Express LocalDB(它随Visual Studio 2013一起提供)。我的本地计算机上没有安装其他任何SQL实例。程序运行良好,并将条目添加到数据库并输出到控制台。但是当文章说“检查你的localdb”时,它并没有说明如何检查!我在项目文件夹下没有看到任何“.mdf”或“.ldf”文件。我尝试了所有连接Visual Studio的Server Explorer到LocalDB的方法。向导无法找到(localdb)或无法在Server Explorer中找到接受类似(localdb)\v11.0;Integrated Security=true;连接字符串的提供程序。我看到有人在StackOverflow上问过类似问题,但是没有一个答案适用或被标记为答案。请帮帮我,这真的让人沮丧!

连接Visual Studio Server Explorer到LocalDB的步骤是什么?


95
我经常同情那些刚进入这个行业的人。20年前,工具实际上要容易得多。现在,文档资料几乎不够用,大多数情况下还不如以前。我现在在MSDN上看到的"文档"只是简单地解释一个方法,例如 "foo" -> "这是foo方法。" 真的吗,微软?技术作家们怎么了?Books Online(真正意义上的)怎么了? - Pittsburgh DBA
3
请确保您以管理员身份运行Visual Studio。 - Darren Griffith
8
如果您愿意使用Visual Studio的SQL Server对象资源管理器而不是服务器资源管理器。它是一个更简单的解决方案(更少的手动配置),请查看我的答案:https://dev59.com/BGEi5IYBdhLWcg3wK5nd#41906391 - Svek
1
我的设置在sqlserverexpress中创建了数据库,而不是在localdb中。这是什么原因? - Jason Cheng
14个回答

322

Visual Studio 2012 中,我所需要做的就是输入:

(localdb)\v11.0

Visual Studio 2015Visual Studio 2017已更改为:

(localdb)\MSSQLLocalDB

在添加 Microsoft SQL Server 数据源时,将其作为服务器名称:

View/Server Explorer/(Right click) Data Connections/Add Connection

然后填充了数据库名称。我不需要完成被接受答案中的所有其他步骤,但如果服务器名称能够自动在服务器名称下拉框中可用那将是很好的。

您还可以使用以下方法浏览计算机上可用的LocalDB数据库名称:

View/SQL Server Object Explorer.

4
没错,这就是第一次应该运行的方式。但如果没有成功,接受答案中的步骤应该会启动该服务并使其工作。 - orad
7
为什么微软要改名而不更新你们的文档呢?(感谢提供VS 2015的路径) - Thibault D.
我有VS 2015,但我一直在使用VS 2012的方式连接到我的本地数据库。所以,(localdb)\MSSQLLocalDB解决了问题。非常感谢! - Labanino
(localdb)\MSSQLLocalDB 在 VS 2017 中对我也起作用。 - Tony L.
是的,我已经从事.NET编程超过六年了,但在这个问题上浪费了整个下午! - user3393933
显示剩余5条评论

267

好的,回答自己的问题。

连接LocalDB到Visual Studio服务器资源管理器的步骤:

  1. 打开命令提示符
  2. 运行SqlLocalDB.exe start v11.0
  3. 运行SqlLocalDB.exe info v11.0
  4. 复制以np:\...开头的实例管道名称
  5. 在Visual Studio中选择TOOLS > Connect to Database...
  6. 对于Server Name输入(localdb)\v11.0。如果不起作用,则使用先前复制的实例管道名称。您还可以使用此方法连接SQL Management Studio。
  7. 在下一个下拉列表中选择数据库
  8. 单击确定

输入图像描述


96
现在在MS平台上的几乎每个操作都需要一些魔法或者先前记忆的知识...当全新的魔法出现时,谁会在5年后支持这些操作呢? - tbone
37
谢谢!补充一下这个很好的答案(和很好的问题):SqlLocalDb info 将列出所有服务器名称。在我的情况下,在进行 EF Code-First 魔术后,我的数据库最终位于 MSSQLLocalDB 而不是 v11.0,因此我在添加连接对话框中输入了 (localdb)\MSSQLLocalDB - biscuit314
2
我相信越来越多的人正在从微软的编程语言转向其他编程语言。这些简单的配置和文件位置问题已经比其他语言缺少的东西更加困难,如果它们真的缺少的话。 - JustJohn
5
我整个下午都在绞尽脑汁思考这个问题。为什么他们要把它弄得这么复杂,以前明明很容易的啊?感谢你的帮助。 - George Williams
1
我有Visual Studio Enterprise 2019 v16.8.3,这个版本可以使用。我的唯一LocalDB实例是"MSSQLLocalDB"。我没有使用管道符号,而是像Kaps / Nasreddine建议的那样,在创建连接时使用(localdb)\MSSQLLocalDB作为服务器名称。似乎LocalDB的默认实例因安装的SQL Server Express版本而异-202使用v11.0,但2014或更新版本将使用MSSQLLocalDB:https://www.sqlshack.com/how-to-connect-and-use-microsoft-sql-server-express-localdb/ - Analytic Lunatic
显示剩余10条评论

84

选择以下内容:

  1. 数据源:Microsoft SQL Server (SqlClient)
  2. 服务器名称:(localdb)\MSSQLLocalDB
  3. 登录到服务器:使用Windows身份验证

按下刷新按钮以获取数据库名称 :)

屏幕截图


1
某种程度上,这是在2015年4月28日唯一有效的答案。 - maazza
5
我也是在使用VS2015,我想这就是答案了。我猜他们改名了LocalDb? - punkouter
1
这个可以在Win 8.1上为VS2015 RC实现。 - ScottG
关于服务器名称:https://dev59.com/_l4d5IYBdhLWcg3wE_KP - Miro
也适用于vs2017。 - Toke Breer-Mortensen
显示剩余2条评论

48

使用SQL Server 对象资源管理器(SSOX)

与其他答案不同,这种方法使用以下方式:
- 没有特殊的命令。
- 没有复杂的配置。
只需使用SQL Server 对象资源管理器

这很简单...

  • 视图菜单中打开SQL Server 对象资源管理器

one

  • 右键单击{YourTableName}表 > 查看设计器

two

完成。


很好,我在 Windows 11 上使用 Sql Server Express 2019,并在 VS2022 中查看,我的项目名称为 ProjectModels,而不是 MSSQLLocalDB...也许我在安装过程中错过了什么,但无论如何,这至少允许我正确设置连接字符串。谢谢! - eaglei22

20

对我有用。

  1. 打开命令提示符
  2. 运行“SqlLocalDB.exe start”
  3. 系统响应“已启动本地数据库实例“mssqllocaldb”。”
  4. 在Visual Studio中,选择View/Server Explorer/(右键单击)Data Connections进行添加连接
    • 数据源: Microsoft SQL Server (SqlClient)
    • 服务器名称: (localdb)\MSSQLLocalDB
    • 登录到服务器: 使用Windows身份验证
  5. 点击“测试连接”,然后点击确定。

12
下面的内容适用于在Windows 10上使用SQL Server Express 2016和Visual Studio 2017社区版。打开PowerShell并使用SqlLocalDB.exe info检查它的名称,再使用SqlLocalDB.exe info NAME检查它是否正在运行。以下是我的机器上的截图:
> SqlLocalDB.exe info
MSSQLLocalDB
> SqlLocalDB.exe info MSSQLLocalDB
Name:               mssqllocaldb
Version:            13.0.1601.5
Shared name:
Owner:              DESKTOP-I4H3E09\simon
Auto-create:        Yes
State:              Running
Last start time:    4/12/2017 8:24:36 AM
Instance pipe name: np:\\.\pipe\LOCALDB#EFC58609\tsql\query
>

如果它没有运行,则需要使用SqlLocalDB.exe start MSSQLLocalDB命令启动它。 当它在运行时,您会看到以np:\\开头的Instance pipe name:。复制该命名管道字符串。在VS2017中打开视图Server Explorer,并创建一个新的连接类型为Microsoft SQL Server (SqlClient)(不要被其他文件类型所迷惑,您要选择完全的连接类型),将Server name:设置为从PowerShell中复制的实例管道名称。

我还将Connect to database也设置为连接字符串中工作的相同数据库,这个连接字符串是使用dotnet ef database update设置的Dotnet Core / Entity Framework Core项目。

您可以使用sqlcmd和已命名的管道字符串登录并创建数据库:

sqlcmd -S np:\\.\pipe\LOCALDB#EFC58609\tsql\query 1> create database EFGetStarted.ConsoleApp.NewDb; 2> GO

有关如何为应用程序创建用户的说明,请参见https://learn.microsoft.com/en-us/sql/tools/sqllocaldb-utility


7

修复不起作用。

正如示例所示,所有这些步骤只提供对“系统”数据库的访问,没有选择要访问的现有用户数据库的选项。

访问本地(非Express版)Microsoft SQL服务器实例的解决方案驻留在SQL Server端:

  1. 打开运行对话框(WinKey + R)
  2. 键入:“services.msc”
  3. 选择SQL Server Browser
  4. 单击属性
  5. 将“禁用”更改为“手动”或“自动”
  6. 当“启动”服务按钮启用时,单击它。

完成!现在您可以从连接属性中的服务器名称列表中选择您的本地SQL Server。


8
这个 StackOverflow 的问答是关于 LocalDB 的。我认为你的回答是关于启用其他 SQL 实例的。 - orad
我在本地环境中尝试了这个修复方法,它按照原始问题的期望进行了修复,而不是你可能认为的那样。不要假设企业版=企业环境。我们中的一些人在工作组机器上使用该版本进行本地开发。 - alejandrob
尽管我仍然需要输入(localdb)而不是使用浏览器,但这实际上为我解决了问题,因此它很好地回答了这个问题。 - PeterJ

7

Visual Studio 2015 RC已安装LocalDb 12,与以前类似的说明,但仍不需要了解“魔法”就可以使用它。在使用之前,默认实例应该已经打开了...抱怨结束,现在提供解决方案:

cmd> sqllocaldb start

这将显示

LocalDB instance "MSSQLLocalDB" started.

您的实例名称可能不同。无论如何,请转到VS并打开Server Explorer,右键单击Data Connections,选择添加,选择SQL Server,在服务器名称中输入:

(localdb)\MSSQLLocalDB

在不输入数据库名称的情况下,点击“测试连接”。


4

以管理员身份运行CMD。

  1. 从开始菜单找到“cmd” - 等待它找到它。
  2. 右键单击cmd,选择以管理员身份打开
  3. 输入:cd C:\Program Files\Microsoft SQL Server\120\Tools\Binn
  4. 输入:SqlLocalDB start
  5. 现在输入:SqlLocalDB info
  6. 显示可用的正在运行的SQL实例...选择您想要的...
  7. 要了解有关实例的更多信息,请输入:SqlLocalDB info instanceName

  8. 现在从VS中可以设置连接 在VS中,查看/服务器资源管理器/(右键)数据连接/添加连接 数据源:Microsoft SQL Server (SqlClient) 服务器名称:(localdb)\MSSQLLocalDB 登录到服务器:使用Windows身份验证 按“测试连接”,然后确定。

  9. 完成任务


4

在 Visual Studio 2017 中最快的方法是转到 工具 -> SQL Server -> 新建查询。选择来自本地数据库并在底部选择所需的数据库名称。

另一种方式

Visual Studio 2017 的服务器名称为:

(localdb)\MSSQLLocalDB

使用菜单工具 -> 连接到数据库... 添加新的连接。


如果您没有将SQLExpress安装到默认实例中,您也可以尝试使用“(localdb)”... - Jason Geiger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接