如何連接 SQL Server 資料庫及注意事項
發表於 : 2018-12-03 11:43:56
https://devmanna.blogspot.com/2016/06/h ... ction.html
[Laravel] 如何連接 SQL Server 資料庫及注意事項
通常開發 Laravel 使用的資料庫大多為 MySQL 或是 Sqlite, 今天遇到網友發問連線至 MS SQL Server 的問題.
我好像也沒真正去連 SQL Server, 那麼就來手動測試一下連線至 MS SQL Server 看看吧!
環境:
Windows 10
SQL Server 2014
Apache 2.4.18 (Win32)
Laravel 5.2.39
PHP 5.6.9 / Microsoft PHP Driver for SQL Server v3.2
PHP 7.0.6 / Microsoft Drivers for PHP for SQL Server v4.0.4
必備元件:
下載 Microsoft PHP Driver for SQL Server
現在官網上的下載版本只支援到 PHP v5.6, 所以只能下載 3.2 版本, 測試的 PHP 版本為 5.6.x
另外若是使用 PHP 7 的朋友, 可以到 GitHub 下載 Azure/msphpsql v4.x 的版本
https://github.com/Azure/msphpsql/tree/v4.0.4
PHP - php.ini 設定
檢查版本資訊
以上圖為例: 我需要符合 PHP 7.0.6 NTS 的版本
將檔案放至 php 的 ext/ 資料夾, 修改 php.ini 加上:
extension=php_pdo_sqlsrv_7_nts.dll
重新啟用 server 即可
查看 phpinfo() 即可得到支援的版本資訊
Laravel database 設定
修改 config/database.php
加上 sqlsrv 的設定區塊
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'prefix' => '',
],
修改 .env 的 DB 設定
DB_CONNECTION=sqlsrv
其他參數依需求變更
測試連線讀取資料
Route::get('/', function () {
var_dump( DB::table('Products')->first() );
});
這裡是讀取資料表 Products 取得第一筆資料, 如果設定正確, 你將會看到印出的物件資料
若是 Driver 沒有設定正確會得到錯誤: could not find driver
若是遇到的 PDOException : SQLSTATE[08001]
這是跟網友遇到的問題是一樣的:
SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: 無法連線,因為目標電腦拒絕連線。
解決 TCP Provider 無法連線:
看到 TCP Provider 的問題, 在很久以前曾經遇過, 只要開啟 Sql Server Configuration Manager 組態管理員, 啟用 SQL Server 網路組態 的 TCP/IP 通訊協定即可
[Laravel] 如何連接 SQL Server 資料庫及注意事項
通常開發 Laravel 使用的資料庫大多為 MySQL 或是 Sqlite, 今天遇到網友發問連線至 MS SQL Server 的問題.
我好像也沒真正去連 SQL Server, 那麼就來手動測試一下連線至 MS SQL Server 看看吧!
環境:
Windows 10
SQL Server 2014
Apache 2.4.18 (Win32)
Laravel 5.2.39
PHP 5.6.9 / Microsoft PHP Driver for SQL Server v3.2
PHP 7.0.6 / Microsoft Drivers for PHP for SQL Server v4.0.4
必備元件:
下載 Microsoft PHP Driver for SQL Server
現在官網上的下載版本只支援到 PHP v5.6, 所以只能下載 3.2 版本, 測試的 PHP 版本為 5.6.x
另外若是使用 PHP 7 的朋友, 可以到 GitHub 下載 Azure/msphpsql v4.x 的版本
https://github.com/Azure/msphpsql/tree/v4.0.4
PHP - php.ini 設定
檢查版本資訊
以上圖為例: 我需要符合 PHP 7.0.6 NTS 的版本
將檔案放至 php 的 ext/ 資料夾, 修改 php.ini 加上:
extension=php_pdo_sqlsrv_7_nts.dll
重新啟用 server 即可
查看 phpinfo() 即可得到支援的版本資訊
Laravel database 設定
修改 config/database.php
加上 sqlsrv 的設定區塊
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'prefix' => '',
],
修改 .env 的 DB 設定
DB_CONNECTION=sqlsrv
其他參數依需求變更
測試連線讀取資料
Route::get('/', function () {
var_dump( DB::table('Products')->first() );
});
這裡是讀取資料表 Products 取得第一筆資料, 如果設定正確, 你將會看到印出的物件資料
若是 Driver 沒有設定正確會得到錯誤: could not find driver
若是遇到的 PDOException : SQLSTATE[08001]
這是跟網友遇到的問題是一樣的:
SQLSTATE[08001]: [Microsoft][ODBC Driver 11 for SQL Server]TCP Provider: 無法連線,因為目標電腦拒絕連線。
解決 TCP Provider 無法連線:
看到 TCP Provider 的問題, 在很久以前曾經遇過, 只要開啟 Sql Server Configuration Manager 組態管理員, 啟用 SQL Server 網路組態 的 TCP/IP 通訊協定即可