Jak się okazuje, omawiana baza danych była już podłączona do domyślnej instancji SQL Server na lokalnym komputerze, więc do połączenia wystarczyło tylko
import pyodbc
conn_str = (
r"Driver={SQL Server Native Client 11.0};"
r"Server=(local);"
r"Database=online_banking;"
r"Trusted_Connection=yes;"
)
conn = pyodbc.connect(conn_str)
Były dwa główne punkty nieporozumień:
P:Jaka jest nazwa „domyślnej instancji” SQL Server?
O:Nie ma.
Odwołując się do instancji SQL Server według nazwy, instancja domyślna po prostu występuje pod nazwą maszyny, podczas gdy nazwana instancja jest identyfikowany przez MachineName\InstanceName . Tak więc na serwerze o nazwie PANORAMA
- Jeśli zainstalujemy „domyślną instancję” SQL Server, nazywamy ją
PANORAMA. - Jeśli zainstalujemy „nazwaną instancję” o nazwie „SQLEXPRESS”, nazywamy ją
PANORAMA\SQLEXPRESS.
Jeśli mówimy o instancji serwera SQL na komputerze lokalnym, możemy użyć (local) zamiast PANORAMA .
P:Czy (local) i (localdb) oznaczają to samo?
O:NIE.
(local) i (local)\InstanceName odnoszą się do „prawdziwych” wystąpień SQL Server opartych na serwerze. Są to instancje, które istnieją od czasu pierwszego wydania programu SQL Server. Działają jako usługa i są w stanie akceptować połączenia sieciowe i robić wszystkie rzeczy, których oczekujemy od serwera bazy danych.
(localdb) i (localdb)\InstanceName referencje – z (localdb) zwykle pisane wielką literą jako (LocalDB) dla jasności – służą do łączenia się z instancjami „SQL Server LocalDB”. Są to tymczasowe lokalne instancje SQL Server przeznaczone głównie dla deweloperów. Szczegółowe informacje można znaleźć w następującym poście na blogu MSDN:
SQL Express v LocalDB v SQL Compact Edition