尝试标准的Laravel数据库配置sqlsrv模板失败,我已经转移到直接的PHP odbc_connect()方法,尝试通过Laravel 5.6连接到我的工作mssql服务器。
我正在公司防火墙后面的工作中构建一个仪表板,另一位开发人员使用以下方法成功创建了一个连接:
$resource = odbc_connect('Driver={ODBC Driver 13 for SQL Server};Server=xxxxxxxxxx;Trusted_Connection=yes;ApplicationIntent=ReadOnly', null, null)
上面的odbc_connect()设置为使用我登录的当前网络AD Windows身份验证,但是,我从Laravel收到以下ErrorException:
odbc_connect(): SQL error: [Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired, SQL state S1T00 in SQLConnect
的phpinfo:
我可以成功连接MSSQL GUI客户端(RazorSQL和Navicat),它们都使用Windows身份验证方法。请注意,我正在运行MAC OSX Sierra。
我现在花了几天时间查看来自人们的论坛,请求和场景无济于事。
任何帮助都会受到很大的帮助!请让我知道在大海捞针中找到这根针所需的任何进一步信息。
答案 0 :(得分:0)
找到位于obdcinst.ini文件中的SQL Server的ODBC驱动程序13,该文件链接到无法识别Windows身份验证的文件。解决方案是使用unixodbc生成安装freetds,它创建了一个识别身份验证的lib。然后我交换了lib。在身份验证后,我确实添加了用户名和密码,但是用户名有双反斜杠,因此,用户名将是YOURDOMAIN \ username。出于某种原因,Laravel会看到这个并将其视为域登录,同时删除反斜杠,请求被发送到服务器,然后允许自己成功登录以按预期执行查询。
希望这可以帮助处于同样情况的任何人。