Laravel SQL Server:SQLSTATE [HY000]:[unixODBC] [Microsoft] [SQL Server的ODBC驱动程序13] TDS流中的协议错误

时间:2017-09-14 15:49:33

标签: php sql sql-server laravel laravel-5

我正在尝试从远程服务器运行原始SQL查询。在这一点上,我不知道它运行的SQL Server版本,但相信它是2008年。我正在尝试使用Laravel 5.5进行连接。我现在只想要一个积极的联系。任何人都可以指导我这个问题是什么?

在选择'之后我也尝试过放置DB :: raw。在字符串中。这是我的查询字符串:

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);
}

1 个答案:

答案 0 :(得分:0)

我知道这篇文章是很久以前的,但仍会尝试为以后的读者解决。
首先,您需要检查本地服务器上是否安装了pdo_sqlsrv扩展名(wamp或xampp)。您可以通过访问URL“ http://localhost/dashboard/phpinfo.php”并搜索“ pdo_sqlsrv”(通常在“ pdo_sqlite”扩展名下面)来在xampp上完成此操作。如果您没有看到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 Provider: No connection could be made because the target machine actively refused it。 br /> 重新启动Laravel服务器