无法将SQLEXPRESS与Laravel 5.6连接

时间:2018-05-31 13:01:21

标签: php sql-server laravel ssms

我正在尝试将Laravel 5.6连接到我的SQLEXPRESS。

当我尝试将表从Laravel迁移到SQL时,我收到此错误:

  

SQLSTATE [08001]:[Microsoft] [SQL Server的ODBC驱动程序13] TCP   提供者:无法建立连接,因为目标计算机主动拒绝它。 (SQL:从sysobjects中选择*,其中type ='U',name = migrations)

我已经将sqlsrv extionsion安装到php并测试了它:

<?php
$serverName = "MYNAME\\SQLEXPRESS"; 

$connectionInfo = array( "Database"=>"Portal", "UID"=>"sa", "PWD"=>"mySecretPwd");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

已成功建立连接。

我也在phpinfo();

中看到了扩展名

但如果使用此设置切换到LAravel 5.6:

我的环境:

DB_CONNECTION=sqlsrv
DB_HOST=MYNAME\\SQLEXPRESS
DB_PORT=1433
DB_DATABASE=Portal
DB_USERNAME=sa
DB_PASSWORD=mySecredPwd

我的配置/数据库:

'default' => env('DB_CONNECTION', 'sqlsrv'),

 'connections' => [

        .....

        'sqlsrv' => [
            'driver' => 'sqlsrv',
            'host' => env('DB_HOST', 'MYNAME\\SQLEXPRESS'),
            'port' => env('DB_PORT', '1433'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'prefix' => '',
        ],

    ],

我收到了一个错误。 我的serverconfigurations管理器如下所示:

enter image description here

我也可以使用SQL Server Management Studio 2017进行连接。

1 个答案:

答案 0 :(得分:3)

首先,找到默认实例的端口号:

  • 检查端口号。如果您有MS SQL Server Management Studio,请在master数据库中执行:coord.ToString("G17")

  • 使用命令提示符(会有很多行,但您必须分析):10 15 20 25 20 25 10 15

可能的解决方案:

  • 停止SQL Server Browser服务并再次测试,始终使用端口号。如果在端口1433上运行,则可以使用TCP / IP连接到SQL Server的默认实例
  • 将SQL Server设置为不使用动态端口并设置默认实例的端口号。
  • 更改Laravel中的config / database以找到跳过端口号的方法。我没有Laravel的经验,但我认为你可以试试xp_readerrorlog 0, 1, N'Server is listening on'

如何配置服务器以侦听特定端口:

  • 打开&#34;计算机管理\服务\ SQL Server配置管理器&#34;。
  • 展开&#34; [实例名称]&#34;的SQL Server网络配置\协议并双击&#34; TCP / IP&#34;。在&#34; TCP / IP属性&#34;对话框,在IP地址选项卡上,转到IPAll。离开&#34; TCP Dynamci端口&#34;空。设置&#34; TCP端口&#34;到所需的端口号(可能是默认的1433)。
  • 在&#34; SQL Server服务&#34;中,双击SQL Server Browser。在&#34;服务&#34;标签集&#34;开始模式&#34;到&#34;手册&#34;。
  • 在&#34; SQL Server服务&#34;中,双击SQL Server Browser。在&#34;登录&#34;停止服务。
  • 在&#34; SQL Server服务&#34;中,双击SQL Server([实例名称])。在&#34;登录&#34;重启服务。
  • 将客户端连接字符串设置为&#34; server \ instance,port&#34;格式。

良好的起点是: SQL Server Browser ServiceConfigure a Server to Listen on a Specific TCP Port

我希望这可以帮到你。