Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

pyodbc ne peut pas se connecter à la base de données

Il s'avère que la base de données en question était déjà attachée à l'instance par défaut de SQL Server sur la machine locale, donc tout ce qui était nécessaire pour se connecter était

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)

Il y avait deux principaux points de confusion :

Q :Quel est le nom d'une "instance par défaut" de SQL Server ?

R :Il n'en a pas.

Lorsque vous faites référence à une instance SQL Server par son nom, une instance par défaut porte simplement le nom de la machine, tandis qu'une instance nommée est identifié par MachineName\InstanceName . Donc, sur un serveur nommé PANORAMA

  • Si nous installons une "instance par défaut" de SQL Server, nous l'appelons PANORAMA .
  • Si nous installons une "instance nommée" appelée "SQLEXPRESS", nous l'appelons PANORAMA\SQLEXPRESS .

Si nous faisons référence à une instance de serveur SQL sur la machine locale, nous pouvons utiliser (local) au lieu de PANORAMA .

Q :Est-ce que (local) et (localdb) signifient la même chose ?

R :NON.

(local) et (local)\InstanceName font référence à des instances « réelles » de SQL Server basées sur un serveur. Ce sont les instances qui existent depuis la première publication de SQL Server. Ils fonctionnent comme un service et sont capables d'accepter les connexions réseau et de faire tout ce que nous attendons d'un serveur de base de données.

(localdb) et (localdb)\InstanceName références – avec (localdb) généralement en majuscule comme (LocalDB) pour plus de clarté - sont utilisés pour se connecter aux instances "SQL Server LocalDB". Il s'agit d'instances SQL Server locales temporaires principalement destinées aux développeurs. Pour plus de détails, consultez le billet de blog MSDN suivant :

SQL Express contre LocalDB contre SQL Compact Edition