Laravel SQL Server:SQLSTATE [HY000]:[unixODBC] [Microsoft] [用于SQL Server的ODBC驱动程序13] TDS流中的协议错误 [英] Laravel SQL Server: SQLSTATE[HY000]: [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Protocol error in TDS stream

查看:712
本文介绍了Laravel SQL Server:SQLSTATE [HY000]:[unixODBC] [Microsoft] [用于SQL Server的ODBC驱动程序13] TDS流中的协议错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从远程服务器运行原始SQL查询.至此,我尚不清楚它正在运行哪个SQL Server版本,但相信它是2008年.我正在尝试使用Laravel 5.5进行连接.我只想在这一点上建立积极的联系.谁能告诉我这个问题可能是什么?

I am attempting to run a raw SQL query from a remote server. At this point I am unaware of what SQL Server version this is running on, but believe it to be 2008. I am attempting to connect using Laravel 5.5. I just want a positive connection at this point. Can anyone direct me as to what the issue may be?

我还尝试将DB :: raw放在字符串中的选择"之后.这是我的查询字符串:

I have also tried putting DB::raw after 'select' in the string. Here is my query string:

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

推荐答案

我知道这篇文章是很久以前的,但仍会尝试为以后的读者解决.

I know this post was a long time ago but will still attempt to solve it for future readers.

首先,您需要检查本地服务器上是否安装了pdo_sqlsrv扩展名(wamp或xampp).您可以通过访问URL" http://localhost/dashboard/phpinfo.php 在xampp上完成此操作并搜索"pdo_sqlsrv",其通常在"pdo_sqlite"扩展名下方.如果没有看到pdo_sqlsrv扩展名,请按照此帖子连接php 7.2转换为使用sqlsrv的MS SQL .

First of all you need to check if you have the pdo_sqlsrv extension installed on your localserver(whether wamp or xampp). You can accomplish this on xampp by visiting the url "http://localhost/dashboard/phpinfo.php" and search for "pdo_sqlsrv", its usually below the "pdo_sqlite" extension. If you don't see the pdo_sqlsrv extension then follow this post Connecting php 7.2 to MS SQL using sqlsrv.

下一步是转到您的.env文件并进行设置

Next thing is to go to your .env file and set

DB_CONNECTION = sqlsrv

DB_CONNECTION=sqlsrv also

DB_PORT = 1433,

DB_PORT=1433,

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

then set DB_HOST,DB_DATABASE,DB_USERNAME and DB_PASSWORD to the correct credentials.

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

If you installed MS SQL on your local pc make sure the Database Engine uses the SQL Server Authentication and not Windows Authentication, and also fix the TCP/IP port to 1433 by following this link to see how its done

SQLSTATE [08001]:[Microsoft] [用于SQL Server的ODBC驱动程序13] TCP提供程序:无法建立连接,因为目标计算机主动拒绝了它..

重新启动Laravel服务器

Restart the Laravel server

这篇关于Laravel SQL Server:SQLSTATE [HY000]:[unixODBC] [Microsoft] [用于SQL Server的ODBC驱动程序13] TDS流中的协议错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆