Django 数据库与主机和实例与 SQL 服务器的连接

Django database connection with Host and Instances with SQL Server

我正在使用 SQL 服务器作为数据库的后端。在 setting.py 文件中,我需要将主机名与实例一起使用。因此,我得到了下面给出的错误,

The above exception (('08001', '[08001] [Microsoft][SQL Server Native Client 11.0]TCP Provider: No connection could be made because the target machine actively refused it.\r\n (10061) (SQLDriverConnect); [08001] [Microsoft][SQL Server Native Client 11.0]Login timeout expired (0); [08001] [Microsoft][SQL Server Native Client 11.0]Invalid connection string attribute (0); [08001] [Microsoft][SQL Server Native Client 11.0]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)')) was the direct cause of the following exception:

在 setting.py 文件中,

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'xxxxx',
        'USER': 'xxx',
        'PASSWORD': 'xxxx',
        'PORT': '1433',
        'HOST': 'aaa\bbb',(hostname\instance)
        'OPTIONS': {
            'driver': 'SQL Server Native Client 11.0',
        },
    }
}

如何解决此错误并连接到我的数据库?

由于您的 settings.py 看起来不错,我认为这是一个普遍的问题,可能是由数据库端的多个错误配置引起的,例如:

  • TCP/IP SQL 服务器配置管理
  • 中禁用了连接
  • 在TCP/IP属性中"IP ALL"部分端口1433无法配置,因此拒绝您的请求
  • 其中一项 SQL windows 服务突然停止

我发现 this stack overflow post 非常有用,有多个答案涵盖了上述每个要点。

您的 post 是将近两年前的事了,但我现在遇到了同样的问题。 通过查看 https://github.com/michiya/django-pyodbc-azure/issues/201

问题似乎出在端口包含在连接字符串中的方式上。这样指定端口即可解决问题:

'default': {
    'ENGINE': 'sql_server.pyodbc',
    'NAME': 'xxxxx',
    'USER': 'xxx',
    'PASSWORD': 'xxxx',
    'HOST': 'aaa\bbb',(hostname\instance)
    'OPTIONS': {
        'driver': 'SQL Server Native Client 11.0',
    },
    'extra_params': 'PORT=1433'

我试过了,没问题。