Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

pyodbc non può connettersi al database

A quanto pare, il database in questione era già collegato all'istanza predefinita di SQL Server sul computer locale, quindi tutto ciò che era necessario per connettersi era

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)

C'erano due punti principali di confusione:

D:Qual è il nome di un'"istanza predefinita" di SQL Server?

A:Non ne ha uno.

Quando si fa riferimento a un'istanza di SQL Server per nome, un'istanza predefinita va semplicemente con il nome della macchina, mentre un'istanza denominata è identificato da MachineName\InstanceName . Quindi, su un server chiamato PANORAMA

  • Se installiamo una "istanza predefinita" di SQL Server, la chiamiamo PANORAMA .
  • Se installiamo una "istanza denominata" chiamata "SQLEXPRESS" la chiamiamo PANORAMA\SQLEXPRESS .

Se ci riferiamo a un'istanza del server SQL sulla macchina locale, possiamo usare (local) invece di PANORAMA .

D:(local) e (localdb) significano la stessa cosa?

R:NO.

(local) e (local)\InstanceName fare riferimento a istanze "reali" basate su server di SQL Server. Queste sono le istanze in circolazione da quando SQL Server è stato rilasciato per la prima volta. Funzionano come un servizio e sono in grado di accettare connessioni di rete e fare tutte le cose che ci aspettiamo da un server di database.

(localdb) e (localdb)\InstanceName riferimenti – con (localdb) di solito in maiuscolo come (LocalDB) per chiarezza, vengono utilizzati per connettersi a istanze "SQL Server LocalDB". Si tratta di istanze locali temporanee di SQL Server destinate principalmente agli sviluppatori. Per i dettagli, vedere il seguente post del blog MSDN:

SQL Express v LocalDB v SQL Compact Edition