feature/integracion-cpanel-asrecovery
This commit is contained in:
@@ -4,8 +4,28 @@ import pyodbc
|
||||
from typing import Optional, Tuple, List
|
||||
import time
|
||||
from dataclasses import dataclass
|
||||
|
||||
from ..utils.logger import app_logger
|
||||
|
||||
_ODBC_DRIVER_CANDIDATES = (
|
||||
"ODBC Driver 18 for SQL Server",
|
||||
"ODBC Driver 17 for SQL Server",
|
||||
"ODBC Driver 13 for SQL Server",
|
||||
"FreeTDS",
|
||||
)
|
||||
|
||||
|
||||
def resolve_odbc_driver() -> str:
|
||||
"""Devuelve el primer driver ODBC de SQL Server disponible."""
|
||||
installed = set(pyodbc.drivers())
|
||||
for name in _ODBC_DRIVER_CANDIDATES:
|
||||
if name in installed:
|
||||
return name
|
||||
raise RuntimeError(
|
||||
"No se encontró driver ODBC para SQL Server. "
|
||||
f"Instalados: {', '.join(pyodbc.drivers()) or 'ninguno'}"
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class LogicalFile:
|
||||
@@ -50,10 +70,13 @@ class SQLServerManager:
|
||||
Returns:
|
||||
Cadena de conexión ODBC
|
||||
"""
|
||||
driver = resolve_odbc_driver()
|
||||
parts = [
|
||||
f"DRIVER={{ODBC Driver 17 for SQL Server}}",
|
||||
f"SERVER={self.server}"
|
||||
f"DRIVER={{{driver}}}",
|
||||
f"SERVER={self.server}",
|
||||
]
|
||||
if "18" in driver:
|
||||
parts.append("TrustServerCertificate=yes")
|
||||
|
||||
if database:
|
||||
parts.append(f"DATABASE={database}")
|
||||
|
||||
Reference in New Issue
Block a user