Làm cách nào để kết nối với LocalDB trong Visual Studio Server Explorer?


240

Tôi không thể tin rằng tôi không thể tìm thấy giải pháp hiệu quả cho vấn đề này sau một giờ tìm kiếm. Tôi đang theo dõi bài viết này trên Entity Framework 6.0, hướng dẫn đơn giản về Code First. Tôi đã tạo dự án và cài đặt gói EF Nuget mới nhất cho dự án để biên dịch. Tôi cũng đã xác minh rằng tôi đã cài đặt Microsoft SQL Server 2012 Express LocalDB đi kèm với Visual Studio 2013. Tôi không có bất kỳ phiên bản SQL nào khác được cài đặt trên máy tính cục bộ của mình. Chương trình chạy và các mục được thêm vào cơ sở dữ liệu và xuất ra trong bàn điều khiển. Nhưng khi bài báo nói "kiểm tra localdb của bạn" thì nó không nói như thế nào! Tôi không thấy bất kỳ tệp '.mdf' hoặc '.ldf' nào được tạo trong thư mục dự án. Tôi đã thử mọi cách để kết nối Visual Studio ' s Server Explorer đến LocalDB. Trình hướng dẫn không thể định vị(localdb)hoặc không thể tìm thấy bất kỳ nhà cung cấp nào trong Server Explorer để chấp nhận chuỗi kết nối như (localdb)\v11.0;Integrated Security=true;tôi đã thấy điều này đã hỏi một số vị trí trong StackOverflow nhưng không có câu trả lời nào hoạt động hoặc được đánh dấu là câu trả lời. Xin hãy giúp đỡ, điều này không phải là bực bội này!

Các bước để kết nối Visual Studio Server Explorer với LocalDB là gì?


70
Tôi thường thương hại những người mới tham gia kinh doanh này. 20 năm trước, các công cụ thực sự dễ sử dụng hơn nhiều. Các tài liệu bây giờ cũng hầu như không đầy đủ, và trong hầu hết các trường hợp, ít hơn. Bây giờ tôi thấy "tài liệu" trên MSDN chỉ đơn giản là giải thích một phương thức, chẳng hạn như "foo" -> "Đây là phương pháp foo." Thật sao, Microsoft? Điều gì đã xảy ra với các nhà văn kỹ thuật? Điều gì đã xảy ra với Books Online (thực tế)?
Pittsburgh DBA

1
Hãy chắc chắn rằng bạn đang chạy Visual Studio với tư cách quản trị viên.
Darren Griffith

4
Nếu bạn ổn với việc sử dụng SQL Server Object Explorer của Visual Studio thay vì Server Explorer . Đó là giải pháp đơn giản hơn (cấu hình thủ công ít hơn), kiểm tra câu trả lời của tôi: stackoverflow.com/a/41906391/3645638
Svek

Thiết lập của tôi tạo cơ sở dữ liệu trong sqlserverexpress chứ không phải trong localdb. Điều gì gây ra điều này?
Jason Cheng

Câu trả lời:


282

Trong Visual Studio 2012, tất cả những gì tôi phải làm là nhập:

(localdb)\v11.0

Visual Studio 2015Visual Studio 2017 đã đổi thành:

(localdb)\MSSQLLocalDB

làm tên máy chủ khi thêm Microsoft SQL Server Datanguồn vào:

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

và sau đó tên cơ sở dữ liệu đã được điền. Tôi không cần phải thực hiện tất cả các bước khác trong câu trả lời được chấp nhận, mặc dù sẽ rất tuyệt nếu tên máy chủ có sẵn tự động trong hộp tổ hợp tên máy chủ.

Bạn cũng có thể duyệt tên cơ sở dữ liệu LocalDB có sẵn trên máy của mình bằng cách sử dụng:

View/SQL Server Object Explorer.

4
Yup, đây là những gì được cho là làm việc lần đầu tiên. Nhưng nếu không, các bước trong câu trả lời được chấp nhận sẽ bắt đầu dịch vụ và làm cho nó hoạt động.
orad

Có lẽ SQL Server Object Explorer đã khởi động nó cho tôi khi tôi sử dụng nó để tìm hiểu tên máy chủ Entity Framework đã sử dụng. Tôi đã tìm thấy câu hỏi này, nhưng tôi cảm thấy sợ khi thử câu trả lời vì tôi hy vọng điều gì đó đơn giản hơn và không đọc hết vì tôi nghĩ rằng tôi phải sử dụng tên ống :)
RationalDev thích GoFundMonica

Tôi chỉ mù quáng với các chi tiết, hay là cực kỳ bực bội khi thiết lập điều này không trực quan hơn? Cho dù vào năm 2012 hay 2015, có vẻ như họ gần như che giấu những thứ như thế này trong suốt IDE.
Rex_C

cảm ơn bạn. Tôi đã làm rối trí não của mình cho đến khi tìm ra câu trả lời của bạn.
Alexandre N.

5
Tại sao Microsoft, tại sao? Tại sao thay đổi tên và không cập nhật tài liệu của bạn? (Cảm ơn bạn về con đường VS 2015)
Thibault D.

256

OK, trả lời câu hỏi của riêng tôi.

Các bước để kết nối LocalDB với Visual Studio Server Explorer

  1. Mở dấu nhắc lệnh
  2. Chạy SqlLocalDB.exe start v11.0
  3. Chạy SqlLocalDB.exe info v11.0
  4. Sao chép tên ống Instance bắt đầu bằng np: \ ...
  5. Trong Visual Studio, chọn CÔNG CỤ> Kết nối với Cơ sở dữ liệu ...
  6. Đối với Tên máy chủ, hãy nhập (localdb)\v11.0. Nếu nó không hoạt động, sử dụng tên ống Instance mà bạn đã sao chép trước đó. Bạn cũng có thể sử dụng điều này để kết nối với SQL Management Studio.
  7. Chọn cơ sở dữ liệu trong danh sách thả xuống tiếp theo
  8. Nhấn vào OK

nhập mô tả hình ảnh ở đây


86
Hầu như mọi hành động ngày nay trên nền tảng MS đều liên quan đến một số phép thuật hoặc kiến ​​thức được ghi nhớ trước đó .... ai sẽ hỗ trợ những điều này trong 5 năm khi có một bộ phép thuật hoàn toàn mới?
xương đòn

34
Cảm ơn bạn! Chỉ cần thêm vào câu trả lời xuất sắc này (và câu hỏi xuất sắc): SqlLocalDb infosẽ liệt kê tất cả các tên máy chủ. Trong trường hợp của tôi, sau khi sự kỳ diệu EF mã đầu tiên, cơ sở dữ liệu của tôi đã kết thúc trong MSSQLLocalDBkhông v11.0, vì vậy tôi bước vào (localdb)\MSSQLLocalDBtrong Add kết nối hộp thoại.
bánh quy314

1
SqlLocalDb.exe xuất hiện hai lần trong đường dẫn hệ thống của tôi - lần đầu tiên trong C: \ Program Files \ Microsoft SQL Server \ 110 \ Tools \ Binn và sau đó trong C: \ Program Files \ Microsoft SQL Server \ 120 \ Tools \ Binn. Do đó, chỉ phiên bản trước sẽ được gọi! Tôi đã cài đặt cả VS2012 và VS 2013.
John Pankowicz 4/2/2015

2
Tôi tin rằng ngày càng có nhiều người hấp dẫn với các ngôn ngữ lập trình khác từ công cụ của Microsoft. Công cụ cấu hình đơn giản và công cụ vị trí tệp này đã trở nên khó hơn bất kỳ ngôn ngữ nào khác thiếu. Nếu họ thiếu chút nào.
JustJohn 17/08/2015

4
Tôi đã gãi đầu suốt buổi chiều về việc này. Tại sao họ phải làm cho nó phức tạp như vậy, khi nó đã từng rất dễ dãi? Cảm ơn đã giúp đỡ.
George Williams

71

Chọn trong:

  1. Nguồn dữ liệu: Microsoft SQL Server (SqlClient)
  2. Tên máy chủ: (localdb)\MSSQLLocalDB
  3. Đăng nhập vào máy chủ: Use Windows Authentication

Nhấn nút Làm mới để lấy tên cơ sở dữ liệu :)

Ảnh chụp màn hình


1
bằng cách nào đó nó là câu trả lời duy nhất hoạt động vào ngày 28/04/2015
maazza

4
cùng ở đây vs2015 .. Đây là câu trả lời .. Tôi đoán họ đã đổi tên thành localDb?
punkouter

1
Điều này đã làm điều đó cho VS2015 RC trên Win 8.1.
ScottG

Giới thiệu về tên máy chủ: stackoverflow.com/questions/27197359/
Kẻ

Hoạt động trong vs2017 cũng được.
Toke Breer-Mortensen

25

Sử dụng SQL Server Object Explorer (SSOX) thay thế

Không giống như các câu trả lời khác, phương pháp này sử dụng:
- Không có lệnh đặc biệt.
- Không có cấu hình phức tạp.
Chỉ cần sử dụng SQL Server Object Explorer

Nó khá đơn giản ...

  • Từ menu View , mở SQL Server Object Explorer .

một

  • Nhấp chuột phải vào {YourTableName}bảng> Xem thiết kế

hai

Làm xong.


16

Nó làm việc cho tôi.

  1. Mở dấu nhắc lệnh
  2. Chạy "SqlLocalDB.exe bắt đầu"
  3. Phản hồi của hệ thống "Ví dụ LocalDB" mssqllocaldb "đã bắt đầu."
  4. Trong VS , Xem / Server Explorer / (Nhấp chuột phải) Kết nối dữ liệu / Thêm kết nối
    • Nguồn dữ liệu: Microsoft SQL Server (SqlClient)
    • Tên máy chủ: (localdb) \ MSSQLLocalDB
    • Đăng nhập vào máy chủ: Sử dụng Windows xác thực
  5. Nhấn "Kiểm tra kết nối", sau đó OK.

8

Phần sau hoạt động với Visual Studio 2017 Community Edition trên Windows 10 bằng SQLServer Express 2016.

Mở PowerShell kiểm tra xem nó được gọi là gì SqlLocalDB.exe infovà có chạy hay không SqlLocalDB.exe info NAME. Đây là những gì nó trông giống như trên máy của tôi:

> 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
>

Nếu nó không chạy thì bạn cần khởi động nó SqlLocalDB.exe start MSSQLLocalDB. Khi nó đang chạy, bạn sẽ thấy Instance pipe name:cái bắt đầu bằng np:\\. Sao chép chuỗi ống có tên. Trong VS2017, mở chế độ xem Server Explorervà tạo một kết nối loại mới Microsoft SQL Server (SqlClient)(không bị đánh lừa bởi các loại tệp khác mà bạn muốn loại kết nối chất béo đầy đủ) và đặt Server name:tên ống là ví dụ bạn đã sao chép từ PowerShell.

Tôi cũng đặt Connect to databasecơ sở dữ liệu giống như trong chuỗi kết nối đang hoạt động trong dự án Dotnet Core / Entity Framework Core được thiết lập bằng cách sử dụng dotnet ef database update.

Bạn có thể đăng nhập và tạo cơ sở dữ liệu bằng cách sử dụng sqlcmdvà chuỗi ống có tên:

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

Có hướng dẫn về cách tạo người dùng cho ứng dụng của bạn tại https://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility


7

Visual Studio 2015 RC, đã cài đặt LocalDb 12, hướng dẫn tương tự trước đây nhưng vẫn không cần phải biết 'ma thuật', trước khi sử dụng, phiên bản mặc định này đã được bật ... Hoàn thành, không cần giải pháp :

cmd> sqllocaldb start

Cái nào sẽ hiển thị

LocalDB instance "MSSQLLocalDB" started.

Tên ví dụ của bạn có thể khác nhau. Dù bằng cách nào, hãy bật lên VS và mở Server Explorer, nhấp chuột phải vào Kết nối dữ liệu, chọn Thêm, chọn Máy chủ SQL, trong loại tên máy chủ:

(localdb)\MSSQLLocalDB

Không cần nhập tên DB, nhấp vào 'Kiểm tra kết nối'.


6

Sửa không hoạt động.

Chính xác như trong ví dụ minh họa, tất cả các bước này chỉ cung cấp quyền truy cập vào cơ sở dữ liệu "hệ thống" và không có tùy chọn để chọn cơ sở dữ liệu người dùng hiện có mà bạn muốn truy cập.

Giải pháp để truy cập phiên bản máy chủ Microsoft SQL cục bộ (không phải Express Edition) nằm ở phía SQL Server:

  1. Mở hộp thoại Run (WinKey + R)
  2. Nhập: "services.msc"
  3. Chọn Trình duyệt máy chủ SQL
  4. Nhấp vào Thuộc tính
  5. Thay đổi "bị vô hiệu hóa" thành "Thủ công" hoặc "Tự động"
  6. Khi nút dịch vụ "Bắt đầu" được bật, hãy nhấp vào nút đó.

Làm xong! Bây giờ bạn có thể chọn Máy chủ SQL cục bộ của mình từ danh sách Tên máy chủ trong Thuộc tính kết nối.


7
Q / A StackOverflow này là về LocalDB . Tôi nghĩ rằng câu trả lời của bạn là về việc kích hoạt các phiên bản khác của SQL.
orad

Tôi đã thử sửa lỗi này trên môi trường cục bộ và nó thực hiện FIX như mong đợi cho câu hỏi ban đầu được đăng, không phải những gì bạn có thể nghĩ nó làm. Đừng cho rằng Phiên bản doanh nghiệp = Môi trường doanh nghiệp. Một số người trong chúng ta sử dụng phiên bản đó để phát triển cục bộ trên máy nhóm.
alejandrob

Mặc dù tôi vẫn phải nhập (localdb) thay vì sử dụng trình duyệt nhưng điều này thực sự đã sửa nó cho tôi, vì vậy nó trả lời câu hỏi rất hay.
PeterJ

4

Chạy CMD với tư cách quản trị viên.

  1. từ menu bắt đầu 'cmd' - đợi nó tìm thấy nó.
  2. Nhấp chuột phải vào cmd và chọn mở với tư cách quản trị viên
  3. loại: cd C: \ Tệp chương trình \ Microsoft SQL Server \ 120 \ Tools \ Binn
  4. loại: SqlLocalDB bắt đầu
  5. bây giờ gõ: thông tin SqlLocalDB
  6. Hiển thị các phiên bản sql đang chạy có sẵn ... chọn những gì bạn muốn ...
  7. để tìm hiểu thêm về loại cá thể: SqlLocalDB thông tin instanceName

  8. bây giờ từ VS bạn có thể thiết lập kết nối của mình Trong VS , Xem / Server Explorer / (Nhấp chuột phải) Kết nối dữ liệu / Thêm dữ liệu kết nối Nguồn: Microsoft SQL Server (SqlClient) Tên máy chủ: (localdb) \ MSSQLLocalDB Đăng nhập vào máy chủ: Sử dụng Windows Xác thực Nhấn "Kiểm tra kết nối", sau đó OK.

  9. công việc hoàn thành


3

Cách nhanh nhất trong Visual Studio 2017 là vào Công cụ -> Máy chủ SQL -> Truy vấn mới .. Chọn từ cơ sở dữ liệu cục bộ và chọn tên Cơ sở dữ liệu mong muốn ở phía dưới.

Thay đổi phương pháp

Tên máy chủ Visual Studio 2017 là:

(localdb)\MSSQLLocalDB

Thêm kết nối mới bằng menu Công cụ -> Kết nối với Cơ sở dữ liệu ...


Nếu bạn không cài đặt SQLE Express vào một phiên bản mặc định, bạn cũng có thể thử ... '(localdb)'
Jason Geiger

1

Tôi đã làm theo các bước trên, nhưng tôi quên cài đặt SQL Server 2014 LocalDB trước cấu hình Visual Studio 2015.

Các bước của tôi như sau:

  1. Cài đặt SQL Server 2014 LocalDB;
  2. Mở Visual Studio 2015 và sau đó là SQL Server Object Explorer ;
  3. Tìm LocalDB của bạn dưới thẻ SQL Server.

Hy vọng điều này sẽ giúp bất cứ ai.


0

Kịch bản: Windows 8.1, VS2013 Ultimate, SQL Express Được cài đặt và chạy, Trình duyệt SQL Server bị vô hiệu hóa. Điều này làm việc cho tôi:

  1. Đầu tiên tôi kích hoạt Trình duyệt SQL Server theo các dịch vụ.
  2. Trong Visual Studio: Mở Bảng điều khiển Trình quản lý gói, sau đó nhập: Bật-Di chuyển ; Sau đó, gõ Bật-Di chuyển -ContextTypeName YourContextDbName đã tạo thư mục Di chuyển trong VS.
  3. Trong thư mục Di chuyển, bạn sẽ tìm thấy tệp "Cấu hình.cs", bật di chuyển tự động bằng cách: AutomaticMigationsEnabled = true;
  4. Chạy lại ứng dụng của bạn, môi trường tạo một DefaultConnection và bạn sẽ thấy các bảng mới từ ngữ cảnh của bạn. Kết nối mới này trỏ đến localdb. Chuỗi kết nối đã tạo hiển thị: Nguồn dữ liệu = (LocalDb) \ v11.0 ... (thêm tham số và đường dẫn đến tệp mdf đã tạo)

Bây giờ bạn có thể tạo kết nối mới với tên Máy chủ: (LocalDb) \ v11.0 (nhấn refresh) Kết nối với cơ sở dữ liệu: Chọn cơ sở dữ liệu mới của bạn trong danh sách thả xuống.

Tôi hy vọng nó sẽ giúp.


-1

Với SQL Server 2017 và Visual Studio 2015, tôi đã sử dụng localhost\SQLEXPRESS

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.