Excel: jak połączyć się z lokalnym serwerem sqlserver

8

Stworzyłem LocalDB, z którym mogę pracować w MS sqlserver management studio 2014, linqpad i visual studio 2013.

Oto część okna dialogowego „właściwości połączenia” w SSMS, która pokazuje nazwę serwera: wprowadź opis zdjęcia tutaj

Chciałbym móc połączyć się z tą bazą danych z poziomu programu Excel. Problem polega na tym, że „Kreator połączenia danych” w programie Excel nie może się połączyć.

Tutaj wpisałem tę samą nazwę serwera, co podano w „właściwościach połączenia” w SSMS ....

wprowadź opis zdjęcia tutaj

A oto błąd, który dostaję ... wprowadź opis zdjęcia tutaj

Pytania:

  • Czy Excel może w ogóle łączyć się z localDB? Wiem, że MOŻE połączyć się z bazami danych serwera SQL. Czy jest jakieś ograniczenie dotyczące LocalDB, które temu zapobiega? Myślałem, że sednem LocalDB było umożliwienie rozwoju bez wysiłku tworzenia samodzielnej bazy danych.

  • Czy istnieje alternatywny sposób połączenia? Czy też nazwa mojego serwera wymaga irytujących modyfikacji?

Angelo
źródło
1
Spróbuj .\mssqllocaldb, albo localhost\mssqllocaldb, albo <comptuersIPAddress>\mssqllocaldb. Jakiej nazwy serwera użyłeś do (udanych) połączeń VS i Linqpad?
Ƭᴇcʜιᴇ007
@ Ƭᴇcʜιᴇ007, dzięki, skopiowałem / wkleiłem dokładnie nazwę serwera znalezioną podczas otwierania okna dialogowego właściwości bazy danych w SSMS. Nie idź na wszystkie trzy przykłady. Nazwa serwera, która działa na Linqpad i SSMS, to dokładnie to ... (localdb) \ mssqllocaldb
Angelo

Odpowiedzi:

6

Co za nieuzasadniona PITA!

Udało mi się sprawić, aby działał za pomocą „Kreatora połączeń danych”, wykonując następujące kroki ....

  1. Wybierz „Inne / Zaawansowane” w Kreatorze połączeń danych, a następnie kliknij „Dalej” . Myślałem, że localDB utworzony przez sqlserver express przejdzie jako „SQL Server”. Najwyraźniej nie! chociaż nie mogę pojąć dlaczego.

wprowadź opis zdjęcia tutaj

  1. Wybierz „SQL Server Native Client 11.0” jako dostawcę. OK, właśnie NIE wybrałem „SQL Server” na poprzedniej karcie. Zdarza się również, że mam uruchomioną wersję 12 SQL Server Express Server i na liście nie ma „12” - być może dotyczy to wyłącznie wersji klienta, z subtelną implikacją, że klient 11 może połączyć się z serwerem 12? Kolejna poznawcza wycinanka.

wprowadź opis zdjęcia tutaj

  1. Wprowadź tę samą nazwę serwera, która działa w SSMS lub linqpad. Wybierz Zintegrowane zabezpieczenia systemu Windows. Testuj połączenie działa teraz i można wybrać bazę danych i zrzucić tabelę do programu Excel.

wprowadź opis zdjęcia tutaj

Nie jest to trudne, ale wydaje się, że nie ma w tym żadnego logicznego przepływu, musisz krążyć wokół, aż coś kliknie.

Angelo
źródło
Szanowni Państwo, łączysz się z SQL Server 2014, który jest w zestawie, i na zrzutach SQLNCLI12ekranu wybierałeś „Native Client 11”, co oznacza SQLNCLI11, że z jakiegoś powodu nie masz „Native Client 12”, który wyróżnia się na 2014 rok.
potwierdzenia
1

To jest ciąg połączenia (SQLServer 2012 / Excel 2013):
Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true ;AttachDbFileName={mdf file full path}

Och, na moim komputerze, musiałem użyć ;Trusted_Connection=Yes, to może nie mieć sensu, ponieważ zarówno mój laptop, jak i komputer PC mają uruchomione dokładnie takie same wersje SQLServer i Excel.


Edytować

Nie mogę odtworzyć błędu (nawet zainstalowałem SQL Server 2014 na maszynie wirtualnej i nadal działa). Jedyną opcją, którą możesz dodać i która może ci pomóc, jest Provider=SQLNCLI11;LUB Provider=SQLNCLI12;Możesz dowiedzieć się, która wersja jest zainstalowana, uruchamiając ją sqllocaldb vw wierszu poleceń.
To dałoby coś w rodzaju:Microsoft SQL Server 2014 (12.0.2000.8)

do potwierdzenia
źródło
dzięki, ale nadal daje błąd. Musiałem usunąć część „server =”, aby uniknąć wyświetlenia „parseConnectParams ()” w oknie dialogowym błędu. Kiedy to zrobiłem, wystąpił taki sam błąd, jak wcześniej.
Angelo
@Angelo Zaktualizowałem moją odpowiedź, proszę zrobić do momentu, gdy spróbujesz.
potwierdzenia