Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Problemas con la conexion de SQL Server 2016 Express en Django
#1
Buenos días Foro
Tengo el siguiente problema para lograr la conexión con Sql Server 2016 Express como motor de base de datos.
Mi configuración en Django es :

DATABASES = {
    'default': {
        'ENGINE''sql_server.pyodbc',
         'HOST''PC_11\\SQLEXPRESS',
          'PORT''1433',
        'NAME''WebStock',
        'USER''fpostai',
        'PASSWORD''piopio',
        'OPTIONS': {
            'driver''ODBC Driver 17 for SQL Server',
            'unicode_results'True,
        },
    },
}


y el error es el siguiente:

"C:\Users\xx\AppData\Roaming\Python\Python38\site-packages\sql_server\pyodbc\base.py", line 312, in get_new_connection
    conn = Database.connect(connstr,
django.db.utils.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión.\r\n (10061) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (10061)')


Se los voy agradecer si me dan una mano 

Gracias !!!!
Responder
#2
Hola, Fabián, bienvenido.

Por lo que veo en la documentación de ese error, por alguna razón tu servidor de SQL Server rechaza la conexión. ¿Vos podés chequear la conexión con algún comando (como sqlcmd) o visor de SQL Server que tengas instalado?

La configuración de Django y el driver parecen estar bien.

Saludos
Responder
#3
Buenas tardes foro 

Sigo con el problema de conexión con SQL Server 2016 y he realizado las pruebas pertinentes, con sqlcmd y la conectividad es positiva. (Adjunto imágen en cmd).

El error en Django sigo teniéndolo:

Exception ignored in thread started by: <function check_errors.<locals>.wrapper at 0x04027658>
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\utils\autoreload.py", line 225, in wrapper
    fn(*args, **kwargs)
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\management\commands\runserver.py", line 120, in inner_run
    self.check_migrations()
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\core\management\base.py", line 442, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
    self.loader = MigrationLoader(self.connection)
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
    self.build_graph()
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\migrations\loader.py", line 212, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\migrations\recorder.py", line 61, in applied_migrations
    if self.has_table():
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\migrations\recorder.py", line 44, in has_table
    return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
    return self._cursor()
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
    self.ensure_connection()
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
    self.connect()
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
    self.connect()
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\django\db\backends\base\base.py", line 194, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Program Files (x86)\Python38-32\lib\site-packages\sql_server\pyodbc\base.py", line 299, in get_new_connection
    conn = Database.connect(connstr,
django.db.utils.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [67].  (67) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (67)')

La conexión desde Django es:

DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'webstock',
'USER': 'fpostai',
'PASSWORD': 'xxxxxx',
'HOST': 'DESKTOP-LIC371L/SQLEXPRESS',
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
}
},
}




Francisco realice lo que me pediste y no llego ha tener conectividad. Te pido disculpas amigo pero sigo con este inconveniente y no puedo avanzar.
Gracias por estar y disculpas si te distraigo


Archivos adjuntos Miniatura(s)
   
Responder
#4
Hola, Fabián.

En el Host de tu settings.py tenés DESKTOP-LIC371L/SQLEXPRESS, ¿no debería ser DESKTOP-LIC371L\SQLEXPRESS? No estoy seguro de que SQL Server soporte indistintamente cualquiera de las dos barras. En Django quedaría con doble barra:

  1. 'HOST': 'DESKTOP-LIC371L\\SQLEXPRESS',


Fijate si con eso lográs conectarte, o al menos un error diferente, eso ya sería un avance!

Saludos
Responder
#5
Buenos días Foro
He tratado de diferente formas de cambiar las barras en

'HOST': 'DESKTOP-LIC371L\\SQLEXPRESS',
'HOST''DESKTOP-LIC371L//SQLEXPRESS',
'HOST''DESKTOP-LIC371L\SQLEXPRESS',
'HOST''DESKTOP-LIC371L/SQLEXPRESS',

Sigo con el mismo problema para conectarme al SQL Server 2016 

Así mismo sigo buscando ejemplos de quienes tienen a sql como motor de base de datos y les funciona..... 

Disculpas si insisto.... pero no encuentro el error
Responder
#6
Hola, Fabián.

Acabo de hacer una prueba con SQL Server 2017 y me funciona correctamente. La única forma en que pude replicar tu error es intencionalmente poniendo un HOST erróneo. La forma correcta de indicar el HOST en Python sería esta:

  1. 'HOST': 'DESKTOP-LIC371L\\SQLEXPRESS',


Pero dado que eso ya probaste y no funciona, podrías intentar poniendo la dirección de IP directamente, por ejemplo:

  1. 'HOST': '172.27.96.1',


¿Tenés SQL Server instalado en la misma PC desde la cual estás ejecutando tu proyecto de Django? Porque puede ser que algún firewall bloquee la conexión del proceso de Python. Si es la misma PC, deberías poder decir:

  1. 'HOST': 'localhost',


Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)