Laravel SQL Server:SQLSTATE [HY000]:[unixODBC] [Microsoft] [ODBC Driver 13 for SQL Server] TDS 流中的协议错误

Use*_*289 4 php sql sql-server laravel laravel-5

我正在尝试从远程服务器运行原始 SQL 查询。此时我不知道它运行在哪个 SQL Server 版本上,但相信它是 2008 年。我尝试使用 Laravel 5.5 进行连接。我现在只想建立积极的联系。谁能指导我可能是什么问题?

我还尝试将 DB::raw 放在字符串中的“select”之后。这是我的查询字符串:

public function index()
{
    $query = DB::connection('sqlsrv')->select('
        SELECT "tProject"."ProjectName", "tProject"."CreatedDate", "tProject"."ProjectNumber", "tProjectEstByItem"."Qty", "tService"."ServiceCode", "tService"."Description", "tProjectItemRollup"."HoursApproved", "tProjectItemRollup"."Hours", "tProjectEstByItem"."Gross", "tProjectStatus"."ProjectStatus", "vw_flat_Project_Properties"."ClientPO", "tProjectEstByItem"."COGross", "tProjectEstByItem"."COQty", "tProject"."EstExpenses", "tProject"."EstLabor", "tProject"."ApprovedCOExpense" 
        FROM   (((("Workamajig"."dbo"."tProject" "tProject" 
        INNER JOIN "Workamajig"."dbo"."tProjectItemRollup" "tProjectItemRollup" 
        ON "tProject"."ProjectKey"="tProjectItemRollup"."ProjectKey") 
        INNER JOIN "Workamajig"."dbo"."tProjectStatus" "tProjectStatus" 
        ON "tProject"."ProjectStatusKey"="tProjectStatus"."ProjectStatusKey") 
        INNER JOIN "Workamajig"."dbo"."vw_flat_Project_Properties" "vw_flat_Project_Properties" 
        ON "tProject"."ProjectNumber"="vw_flat_Project_Properties"."ProjectNumber") 
        LEFT OUTER JOIN "Workamajig"."dbo"."tProjectEstByItem" "tProjectEstByItem" 
        ON ("tProjectItemRollup"."ProjectKey"="tProjectEstByItem"."ProjectKey") 
        AND ("tProjectItemRollup"."EntityKey"="tProjectEstByItem"."EntityKey")) 
        INNER JOIN "Workamajig"."dbo"."tService" "tService" 
        ON "tProjectItemRollup"."EntityKey"="tService"."ServiceKey" 
        WHERE  "tProject"."CreatedDate">={ts "2017-06-26 00:00:00"} 
        AND "tProject"."ProjectNumber" 
        LIKE "bigl%" 
        ORDER BY "tProject"."ProjectNumber", "tService"."Description" ');

    dd($query);
}
Run Code Online (Sandbox Code Playgroud)

小智 5

我知道这篇文章是很久以前的事了,但仍会尝试为未来的读者解决这个问题。

首先,您需要检查本地服务器上是否安装了 pdo_sqlsrv 扩展(无论是 wamp 还是 xampp)。您可以在 xampp 上通过访问 url“ http://localhost/dashboard/phpinfo.php ”并搜索“pdo_sqlsrv”来完成此操作,它通常位于“pdo_sqlite”扩展名下方。如果您没有看到 pdo_sqlsrv 扩展,请按照这篇文章Connecting php 7.2 to MS SQL using sqlsrv

接下来的事情是转到您的 .env 文件并设置

DB_CONNECTION=sqlsrv 也

DB_PORT=1433,

然后将 DB_HOST、DB_DATABASE、DB_USERNAME 和 DB_PASSWORD 设置为正确的凭据。

如果您在本地 PC 上安装了 MS SQL,请确保数据库引擎使用 SQL Server 身份验证而不是 Windows 身份验证,并通过以下链接将 TCP/IP 端口修复为 1433 以查看其完成情况

SQLSTATE[08001]: [Microsoft][ODBC Driver 13 for SQL Server]TCP 提供程序:无法建立连接,因为目标计算机主动拒绝

重新启动 Laravel 服务器