sql >> Base de Datos >  >> RDS >> Sqlserver

pyodbc no puede conectarse a la base de datos

Resulta que la base de datos en cuestión ya estaba adjunta a la instancia predeterminada de SQL Server en la máquina local, por lo que todo lo que se necesitaba para conectarse 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)

Había dos puntos principales de confusión:

P:¿Cuál es el nombre de una "instancia predeterminada" de SQL Server?

R:No tiene uno.

Cuando se hace referencia a una instancia de SQL Server por su nombre, una instancia predeterminada simplemente pasa por el nombre de la máquina, mientras que una instancia con nombre se identifica con MachineName\InstanceName . Entonces, en un servidor llamado PANORAMA

  • Si instalamos una "instancia predeterminada" de SQL Server, nos referiremos a ella como PANORAMA .
  • Si instalamos una "instancia con nombre" llamada "SQLEXPRESS", nos referiremos a ella como PANORAMA\SQLEXPRESS .

Si nos referimos a una instancia de servidor SQL en la máquina local, podemos usar (local) en lugar de PANORAMA .

P:¿(local) y (localdb) significan lo mismo?

R:NO.

(local) y (local)\InstanceName consulte instancias "reales" basadas en servidor de SQL Server. Estas son las instancias que han existido desde que se lanzó por primera vez SQL Server. Se ejecutan como un servicio y pueden aceptar conexiones de red y hacer todas las cosas que esperamos que haga un servidor de base de datos.

(localdb) y (localdb)\InstanceName referencias – con (localdb) generalmente en mayúsculas como (LocalDB) para mayor claridad, se utilizan para conectarse a instancias de "SQL Server LocalDB". Estas son instancias locales temporales de SQL Server destinadas principalmente a desarrolladores. Para obtener más información, consulte la siguiente entrada de blog de MSDN:

SQL Express contra LocalDB contra SQL Compact Edition