Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Pyodbc kann keine Verbindung zur Datenbank herstellen

Wie sich herausstellte, war die fragliche Datenbank bereits an die Standardinstanz von SQL Server auf dem lokalen Computer angehängt, sodass zum Herstellen einer Verbindung lediglich

erforderlich war
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)

Es gab zwei Hauptverwirrungspunkte:

F:Wie lautet der Name einer "Standardinstanz" von SQL Server?

A:Es hat keine.

Wenn auf eine SQL Server-Instanz nach Namen verwiesen wird, eine Standardinstanz geht einfach nach dem Namen der Maschine, während eine benannte Instanz wird durch MachineName\InstanceName identifiziert . Also auf einem Server namens PANORAMA

  • Wenn wir eine "Standardinstanz" von SQL Server installieren, bezeichnen wir sie als PANORAMA .
  • Wenn wir eine "benannte Instanz" namens "SQLEXPRESS" installieren, bezeichnen wir sie als PANORAMA\SQLEXPRESS .

Wenn wir uns auf eine SQL-Serverinstanz auf dem lokalen Computer beziehen, können wir (local) verwenden statt PANORAMA .

F:Bedeuten (local) und (localdb) dasselbe?

A:NEIN.

(local) und (local)\InstanceName beziehen sich auf "echte" serverbasierte Instanzen von SQL Server. Dies sind die Instanzen, die es seit der ersten Veröffentlichung von SQL Server gibt. Sie werden als Dienst ausgeführt und können Netzwerkverbindungen akzeptieren und all die Dinge tun, die wir von einem Datenbankserver erwarten.

(localdb) und (localdb)\InstanceName Verweise – mit (localdb) wird normalerweise als (LocalDB) groß geschrieben zur Verdeutlichung – werden verwendet, um eine Verbindung zu „SQL Server LocalDB“-Instanzen herzustellen. Dies sind temporäre lokale SQL Server-Instanzen, die hauptsächlich für Entwickler gedacht sind. Einzelheiten finden Sie im folgenden MSDN-Blogbeitrag:

SQL Express v LocalDB v SQL Compact Edition