จะเชื่อมต่อ LocalDB ใน Visual Studio Server Explorer ได้อย่างไร


240

ฉันไม่อยากจะเชื่อว่าฉันไม่สามารถหาวิธีแก้ปัญหาการทำงานได้หลังจากใช้เวลาค้นหาไปหนึ่งชั่วโมง ฉันกำลังติดตามบทความนี้ใน Entity Framework 6.0 ซึ่งให้ข้อมูลเบื้องต้นอย่างง่ายๆเกี่ยวกับ Code First ฉันสร้างโครงการและติดตั้งแพคเกจ EF Nugetล่าสุดสำหรับโครงการที่จะรวบรวม ฉันยังตรวจสอบว่าฉันมี Microsoft SQL Server 2012 Express LocalDB ติดตั้งซึ่งมาพร้อมกับ Visual Studio 2013 ฉันไม่มีอินสแตนซ์อื่น ๆ ของ SQL ติดตั้งอยู่ในคอมพิวเตอร์ของฉัน โปรแกรมรันและรายการจะถูกเพิ่มลงในฐานข้อมูลและแสดงผลในคอนโซล แต่เมื่อบทความบอกว่า "ตรวจสอบ localdb ของคุณ" มันไม่ได้บอกว่า! ฉันไม่เห็นไฟล์ '.mdf' หรือ '.ldf' ใด ๆ ที่สร้างขึ้นภายใต้โฟลเดอร์โครงการ ฉันพยายามทุกวิถีทางในการเชื่อมต่อ Visual Studio ' s Server Explorer เป็น LocalDB ตัวช่วยสร้างไม่สามารถค้นหาได้(localdb)หรือไม่พบผู้ให้บริการใด ๆ ใน Server Explorer เพื่อยอมรับสตริงการเชื่อมต่ออย่างที่(localdb)\v11.0;Integrated Security=true;ฉันเคยเห็นนี่ถามสถานที่หลายแห่งใน StackOverflow แต่ไม่มีคำตอบทำงานหรือทำเครื่องหมายว่าเป็นคำตอบ โปรดช่วยด้วยนี่ไม่จำเป็นต้องน่าผิดหวังเท่านี้!

ขั้นตอนในการเชื่อมต่อ Visual Studio Server Explorer กับ LocalDB คืออะไร


70
ฉันมักจะสงสารคนที่เพิ่งเข้าสู่ธุรกิจนี้ 20 ปีที่แล้วเครื่องมือนี้ใช้งานง่ายกว่ามาก ขณะนี้เอกสารยังไม่เพียงพอและในกรณีส่วนใหญ่น้อยกว่า ฉันเห็น "เอกสาร" ตอนนี้บน MSDN ที่อธิบายวิธีการเช่น "foo" -> "นี่คือวิธี foo" Microsoft จริงเหรอ? เกิดอะไรขึ้นกับนักเขียนทางเทคนิค เกิดอะไรขึ้นกับ Books Online (ของจริง)
Pittsburgh DBA

1
ตรวจสอบให้แน่ใจว่าคุณกำลังเรียกใช้ Visual Studio ในฐานะผู้ดูแล
Darren Griffith

4
หากคุณโอเคกับการใช้ Visual Studio ของSQL Server วัตถุ Explorerแทนเซิร์ฟเวอร์ Explorer มันเป็นวิธีที่ง่ายกว่า (การกำหนดค่าด้วยตนเองน้อยกว่า) ตรวจสอบคำตอบของฉัน: stackoverflow.com/a/41906391/3645638
Svek

การตั้งค่าของฉันสร้างฐานข้อมูลใน sqlserverexpress แทนที่จะเป็น localdb อะไรทำให้เกิดสิ่งนี้
Jason Cheng

คำตอบ:


282

ในVisual Studio 2012สิ่งที่ฉันต้องทำคือป้อน:

(localdb)\v11.0

Visual Studio 2015และVisual Studio 2017เปลี่ยนเป็น:

(localdb)\MSSQLLocalDB

เป็นชื่อเซิร์ฟเวอร์เมื่อเพิ่มMicrosoft SQL Server Dataแหล่งที่มาใน:

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

จากนั้นชื่อฐานข้อมูลจะถูกเติม ฉันไม่จำเป็นต้องทำตามขั้นตอนอื่นทั้งหมดในคำตอบที่ยอมรับแม้ว่ามันจะดีถ้าชื่อเซิร์ฟเวอร์พร้อมใช้งานโดยอัตโนมัติในกล่องคำสั่งผสมชื่อเซิร์ฟเวอร์

คุณยังสามารถเรียกดูชื่อฐานข้อมูล LocalDB ที่มีอยู่ในเครื่องของคุณโดยใช้:

View/SQL Server Object Explorer.

4
ใช่นี่คือสิ่งที่ควรจะทำงานในครั้งแรก แต่หากไม่เป็นเช่นนั้นขั้นตอนในคำตอบที่ยอมรับควรเริ่มให้บริการและทำให้ใช้งานได้
orad

บางที SQL Server Object Explorer เริ่มต้นให้ฉันเมื่อฉันใช้เพื่อค้นหาว่าชื่อเซิร์ฟเวอร์ Entity Framework ใช้อะไร ฉันได้พบคำถามนี้ แต่กลัวที่จะลองคำตอบเพราะฉันหวังว่าจะง่ายขึ้นและไม่ได้อ่านอย่างเต็มที่เพราะฉันคิดว่าฉันต้องใช้ชื่อ
ไพพ์

ฉันแค่มัวไปดูรายละเอียดหรือว่ามันน่าหงุดหงิดอย่างยิ่งที่การตั้งค่านี้ไม่ง่ายขึ้นหรือไม่ ไม่ว่าจะเป็นในปี 2012 หรือ 2015 ดูเหมือนว่าพวกเขาเกือบจะซ่อนอะไรแบบนี้ตลอดทั้ง IDE
Rex_C

ขอบคุณ. ฉันกำลังคั้นสมองจนหาคำตอบของคุณ
Alexandre N.

5
ทำไมต้องเป็น Microsoft ทำไมเปลี่ยนชื่อและไม่อัพเดทเอกสารของคุณ? (ขอบคุณสำหรับเส้นทาง VS 2015)
Thibault D.

256

ตกลงตอบคำถามของฉันเอง

ขั้นตอนในการเชื่อมต่อ LocalDB กับ Visual Studio Server Explorer

  1. พร้อมรับคำสั่งเปิด
  2. วิ่ง SqlLocalDB.exe start v11.0
  3. วิ่ง SqlLocalDB.exe info v11.0
  4. คัดลอกชื่อไปป์อินสแตนซ์ที่ขึ้นต้นด้วย np: \ ...
  5. ใน Visual Studio เลือกเครื่องมือ> เชื่อมต่อกับฐานข้อมูล ...
  6. (localdb)\v11.0สำหรับป้อนชื่อเซิร์ฟเวอร์ หากไม่ได้ผลให้ใช้ชื่อไพพ์อินสแตนซ์ที่คุณคัดลอกมาก่อนหน้านี้ คุณสามารถใช้สิ่งนี้เพื่อเชื่อมต่อกับ SQL Management Studio
  7. เลือกฐานข้อมูลในรายการดรอปดาวน์ถัดไป
  8. คลิกตกลง

ป้อนคำอธิบายรูปภาพที่นี่


86
เกือบทุกการกระทำในวันนี้บนแพลตฟอร์ม MS เกี่ยวข้องกับเวทมนตร์หรือความรู้ที่ถูกจดจำมาก่อน .... ใครจะสนับสนุนสิ่งเหล่านี้ใน 5 ปีเมื่อมีชุดเวทมนตร์ใหม่ทั้งหมดเข้ามาแทนที่
tbone

34
ขอบคุณ! เพียงเพื่อเพิ่มคำตอบที่ยอดเยี่ยมนี้ (และคำถามที่ยอดเยี่ยม): SqlLocalDb infoจะแสดงรายชื่อเซิร์ฟเวอร์ทั้งหมด ในกรณีของฉันหลังจากมายากล EF รหัสแรกฐานข้อมูลของฉันสิ้นสุดลงในMSSQLLocalDBไม่ได้v11.0ดังนั้นฉันเข้ามา(localdb)\MSSQLLocalDBในการเพิ่มการเชื่อมต่อกล่องโต้ตอบ
biscuit314

1
SqlLocalDb.exe ปรากฏขึ้นสองครั้งในเส้นทางระบบของฉัน - เป็นอันดับแรกใน Server \ 110 \ Tools \ Binn SQL Files \ Microsoft C: \ Program จากนั้นใน SQL Server \ 120 \ Tools \ Binn Files \ Microsoft C: \ Program ดังนั้นเฉพาะเวอร์ชั่นก่อนหน้าเท่านั้นที่จะถูกเรียก! ฉันติดตั้งทั้ง VS2012 และ VS 2013 แล้ว
John Pankowicz

2
ฉันเชื่อว่าผู้คนจำนวนมากขึ้นหันมาสนใจภาษาโปรแกรมอื่น ๆ จาก Microsoft มากขึ้น เนื้อหาการกำหนดค่าอย่างง่ายและเนื้อหาตำแหน่งไฟล์นั้นยากกว่าที่ภาษาอื่นขาด หากพวกเขาขาดเลย
JustJohn

4
ฉันเกาหัวตลอดบ่ายนี้ ทำไมพวกเขาต้องทำให้มันซับซ้อนเมื่อมันเคยเป็นเรื่องง่ายมาก? ขอบคุณสำหรับความช่วยเหลือ
George Williams

71

เลือกใน:

  1. แหล่งข้อมูล: Microsoft SQL Server (SqlClient)
  2. ชื่อเซิร์ฟเวอร์: (localdb)\MSSQLLocalDB
  3. เข้าสู่ระบบเซิร์ฟเวอร์: Use Windows Authentication

กดปุ่มรีเฟรชเพื่อรับชื่อฐานข้อมูล :)

ภาพหน้าจอ


1
อย่างใดมันเป็นคำตอบที่ทำงานเฉพาะใน 28/04/2015
maazza

4
เหมือนกันที่นี่ vs2015 .. นี่คือคำตอบ .. ฉันเดาว่าพวกเขาเปลี่ยนชื่อ localDb?
Punkouter

1
อันนี้ทำได้สำหรับ VS2015 RC ใน Win 8.1
ScottG

เกี่ยวกับชื่อเซิร์ฟเวอร์: stackoverflow.com/questions/27197359/…
kr85

ทำงานได้ใน vs2017 ด้วย
Toke Breer-Mortensen

25

ใช้SQL Server Object Explorer (SSOX)แทน

ต่างจากคำตอบอื่น ๆ วิธีการนี้ใช้:
- ไม่มีคำสั่งพิเศษ
- ไม่มีการกำหนดค่าที่ซับซ้อน
เพียงใช้Explorer ของวัตถุเซิร์ฟเวอร์ SQL

มันค่อนข้างตรงไปตรงมา ...

  • จากดูเมนูเปิดSQL Server วัตถุ Explorer

หนึ่ง

  • คลิกขวาที่{YourTableName}ตาราง> View Designer

สอง

เสร็จสิ้น


16

มันใช้งานได้สำหรับฉัน

  1. พร้อมรับคำสั่งเปิด
  2. เรียกใช้ "เริ่ม SqlLocalDB.exe"
  3. การตอบสนองของระบบ "อินสแตนซ์ LocalDB" mssqllocaldb "สตาร์ทแล้ว"
  4. ใน VS, ดู / เซิร์ฟเวอร์ Explorer / (คลิกขวา) การเชื่อมต่อข้อมูล / เพิ่มการเชื่อมต่อ
    • แหล่งข้อมูล: Microsoft SQL Server (SqlClient)
    • ชื่อเซิร์ฟเวอร์: (localdb) \ MSSQLLocalDB
    • เข้าสู่ระบบเซิร์ฟเวอร์: ใช้การรับรองความถูกต้องของ Windows
  5. กด "ทดสอบการเชื่อมต่อ" จากนั้นตกลง

8

การทำงานต่อไปนี้กับ Visual Studio 2017 Community Edition บน Windows 10 โดยใช้ SQLServer Express 2016

เปิดการตรวจสอบ 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ถ้ามันไม่ได้ทำงานแล้วคุณจะต้องเริ่มต้นด้วย เมื่อมีการทำงานคุณเห็นซึ่งเริ่มต้นด้วยInstance pipe name: np:\\คัดลอกไพพ์ที่ชื่อสตริง ภายใน VS2017 เปิดมุมมองServer Explorerและสร้างการเชื่อมต่อชนิดใหม่Microsoft SQL Server (SqlClient)(อย่าหลงกลโดยไฟล์ประเภทอื่นที่คุณต้องการชนิดการเชื่อมต่อแบบเต็มไขมัน) และตั้งค่าServer name:ให้เป็นชื่อไปป์อินสแตนซ์ที่คุณคัดลอกจาก PowerShell

ฉันยังตั้งConnect to databaseให้เป็นฐานข้อมูลเดียวกันกับที่อยู่ในสตริงการเชื่อมต่อที่ทำงานในโครงการ Dotnet Core / Entity Framework Core ของฉันซึ่งตั้งค่าโดยใช้dotnet ef database updateหลักของฉันที่ถูกจัดตั้งขึ้นโดยใช้

คุณสามารถล็อกอินและสร้างฐานข้อมูลโดยใช้sqlcmdสตริงที่มีชื่อและ:

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

มีคำแนะนำเกี่ยวกับวิธีการสร้างผู้ใช้แอปพลิเคชันของคุณที่https://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility


7

Visual Studio 2015 RC มีการติดตั้ง LocalDb 12 คล้ายกับคำแนะนำก่อนหน้า แต่ยังไม่จำเป็นต้องรู้ว่า 'วิเศษ' ก่อนที่จะใช้สิ่งนี้อินสแตนซ์ที่เป็นค่าเริ่มต้นควรได้รับการเปิด ... :

cmd> sqllocaldb start

ซึ่งจะแสดงผล

LocalDB instance "MSSQLLocalDB" started.

ชื่ออินสแตนซ์ของคุณอาจแตกต่างกัน ไม่ว่าจะปรากฏใน VS และเปิด Server Explorer คลิกขวาที่การเชื่อมต่อข้อมูลเลือกเพิ่มเลือก SQL Server ในประเภทชื่อเซิร์ฟเวอร์:

(localdb)\MSSQLLocalDB

โดยไม่ต้องป้อนชื่อ DB ให้คลิก 'ทดสอบการเชื่อมต่อ'


6

การแก้ไขไม่ทำงาน

เหมือนกับในภาพประกอบตัวอย่างทุกขั้นตอนเหล่านี้ให้การเข้าถึงฐานข้อมูล "ระบบ" เท่านั้นและไม่มีตัวเลือกให้เลือกฐานข้อมูลผู้ใช้ที่มีอยู่ที่คุณต้องการเข้าถึง

วิธีแก้ปัญหาในการเข้าถึงอินสแตนซ์ของเซิร์ฟเวอร์ Microsoft SQL ภายในเครื่อง (ไม่ใช่รุ่น Express) อยู่บนฝั่งเซิร์ฟเวอร์ SQL:

  1. เปิดไดอะล็อก Run (WinKey + R)
  2. ประเภท: "services.msc"
  3. เลือกเบราว์เซอร์เซิร์ฟเวอร์ SQL
  4. คลิกคุณสมบัติ
  5. เปลี่ยน "ปิดใช้งาน" เป็น "ด้วยตนเอง" หรือ "อัตโนมัติ"
  6. เมื่อปุ่มบริการ "เริ่ม" ได้รับการเปิดใช้งานให้คลิกที่มัน

ทำ! ตอนนี้คุณสามารถเลือก SQL Server ในพื้นที่ของคุณจากรายการชื่อเซิร์ฟเวอร์ในคุณสมบัติการเชื่อมต่อ


7
นี้ StackOverflow Q / A เป็นเรื่องเกี่ยวกับLocalDB ฉันคิดว่าคำตอบของคุณเกี่ยวกับการเปิดใช้งานอินสแตนซ์อื่นของ SQL
orad

ฉันลองแก้ไขนี้ในสภาพแวดล้อมท้องถิ่นและแก้ไขตามที่คาดไว้สำหรับคำถามดั้งเดิมที่โพสต์ไม่ใช่สิ่งที่คุณคิดว่าทำได้ อย่าถือว่า Enterprise Edition = สภาพแวดล้อมขององค์กร พวกเราบางคนใช้ฉบับนั้นเพื่อการพัฒนาท้องถิ่นในเครื่องเวิร์กกรุ๊ป
alejandrob

แม้ว่าฉันจะยังต้องป้อน (localdb) แทนที่จะใช้เบราว์เซอร์สิ่งนี้แก้ไขได้จริงสำหรับฉันดังนั้นจึงตอบคำถามได้ดี
PeterJ

4

เรียกใช้ CMD ในฐานะผู้ดูแลระบบ

  1. จากเมนูเริ่ม 'cmd' - รอให้มันพบ
  2. คลิกขวาที่ cmd แล้วเลือก open as administrator
  3. ประเภท: cd Server \ 120 \ Tools \ Binn SQL Files \ Microsoft C: \ Program
  4. ประเภท: SqlLocalDB เริ่มต้น
  5. ตอนนี้พิมพ์: ข้อมูล SqlLocalDB
  6. แสดงอินสแตนซ์ของ SQL ที่ใช้งานได้ ... เลือกสิ่งที่คุณต้องการ ...
  7. เพื่อค้นหาเพิ่มเติมเกี่ยวกับประเภทอินสแตนซ์: SqlLocalDB info instanceName

  8. ตอนนี้จาก VS คุณสามารถตั้งค่าการเชื่อมต่อของคุณใน VS, ดู / Server Explorer / (คลิกขวา) การเชื่อมต่อข้อมูล / เพิ่มแหล่งข้อมูลการเชื่อมต่อ: Microsoft SQL Server (SqlClient) ชื่อเซิร์ฟเวอร์: (localdb) \ MSSQLLocalDB เข้าสู่เซิร์ฟเวอร์: ใช้ Windows การรับรองความถูกต้องกด "ทดสอบการเชื่อมต่อ" จากนั้นตกลง

  9. งานเสร็จ


3

วิธีที่เร็วที่สุดใน Visual Studio 2017 คือไปที่เครื่องมือ -> SQL Server -> แบบสอบถามใหม่ .. เลือกจากฐานข้อมูลท้องถิ่นและเลือกชื่อฐานข้อมูลที่ต้องการที่ด้านล่าง

ทางเลือกอื่น

ชื่อเซิร์ฟเวอร์ Visual Studio 2017 คือ:

(localdb)\MSSQLLocalDB

เพิ่มการเชื่อมต่อใหม่โดยใช้เมนูเครื่องมือ -> เชื่อมต่อกับฐานข้อมูล ...


หากคุณไม่ได้ติดตั้ง SQLExpress ให้กับอินสแตนซ์เริ่มต้นคุณอาจลอง ... '(localdb)'
Jason Geiger

1

ฉันทำตามขั้นตอนข้างต้น แต่ฉันลืมติดตั้ง SQL Server 2014 LocalDB ก่อนการกำหนดค่า Visual Studio 2015

ขั้นตอนของฉันมีดังนี้:

  1. ติดตั้ง LocalDB ของ SQL Server 2014
  2. เปิด Visual Studio 2015 และจากนั้นวัตถุ SQL เซิร์ฟเวอร์ Explorer ;
  3. ค้นหา LocalDB ของคุณภายใต้แท็ก SQL Server

หวังว่านี่จะช่วยใครก็ได้


0

สถานการณ์จำลอง: Windows 8.1, VS2013 Ultimate, ติดตั้งและใช้งาน SQL Express, ปิดใช้งานเบราว์เซอร์เซิร์ฟเวอร์ SQL สิ่งนี้ใช้ได้กับฉัน:

  1. ก่อนอื่นฉันเปิดใช้งานเบราว์เซอร์เซิร์ฟเวอร์ SQL ภายใต้บริการ
  2. ใน Visual Studio: เปิดคอนโซลการจัดการแพคเกจจากนั้นพิมพ์: เปิดใช้ Migrations ; จากนั้นพิมพ์Enable-Migrations --ContextTypeName YourContextDbName ที่สร้างโฟลเดอร์ Migrations ใน VS
  3. ภายในโฟลเดอร์ Migrations คุณจะพบไฟล์ "Configuration.cs" เปิดการโยกย้ายอัตโนมัติโดย: AutomaticMigrationsEnabled = true;
  4. เรียกใช้แอปพลิเคชันของคุณอีกครั้งสภาพแวดล้อมจะสร้าง DefaultConnection และคุณจะเห็นตารางใหม่จากบริบทของคุณ การเชื่อมต่อใหม่นี้ชี้ไปที่ localdb สตริงการเชื่อมต่อที่สร้างขึ้นแสดง: Data Source = (LocalDb) \ v11.0 ... (พารามิเตอร์เพิ่มเติมและพา ธ ไปยังไฟล์ mdf ที่สร้างขึ้น)

ตอนนี้คุณสามารถสร้างการเชื่อมต่อใหม่ด้วยชื่อเซิร์ฟเวอร์: (LocalDb) \ v11.0 (กดรีเฟรช) เชื่อมต่อกับฐานข้อมูล: เลือกฐานข้อมูลใหม่ของคุณภายใต้ดรอปดาวน์

ฉันหวังว่ามันจะช่วย


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.