Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

pyodbc não pode se conectar ao banco de dados


Acontece que o banco de dados em questão já estava anexado à instância padrão do SQL Server na máquina local, então tudo o que era necessário para conectar 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)

Havia dois pontos principais de confusão:

P:Qual é o nome de uma "instância padrão" do SQL Server?


R:Não tem.

Ao se referir a uma instância do SQL Server pelo nome, uma instância padrão simplesmente atende pelo nome da máquina, enquanto uma instância nomeada é identificado por MachineName\InstanceName . Então, em um servidor chamado PANORAMA
  • Se instalarmos uma "instância padrão" do SQL Server, nos referimos a ela como PANORAMA .
  • Se instalarmos uma "instância nomeada" chamada "SQLEXPRESS", nos referimos a ela como PANORAMA\SQLEXPRESS .

Se estivermos nos referindo a uma instância do servidor SQL na máquina local, podemos usar (local) em vez de PANORAMA .

P:(local) e (localdb) significam a mesma coisa?


R:NÃO.

(local) e (local)\InstanceName consulte instâncias baseadas em servidor "reais" do SQL Server. Essas são as instâncias que existem desde o lançamento do SQL Server. Eles são executados como um serviço e são capazes de aceitar conexões de rede e fazer todas as coisas que esperamos que um servidor de banco de dados faça.

(localdb) e (localdb)\InstanceName referências – com (localdb) geralmente em maiúsculas como (LocalDB) para maior clareza – são usados ​​para se conectar a instâncias do "SQL Server LocalDB". Essas são instâncias locais temporárias do SQL Server destinadas principalmente a desenvolvedores. Para obter detalhes, consulte a seguinte postagem de blog do MSDN:

SQL Express v LocalDB v SQL Compact Edition