Tôi đang cố kết nối với Máy chủ MS-SQL từ PHP-8.0 (lưu trữ trên máy chủ cục bộ IIS-10) bằng Trình điều khiển máy chủ SQL cho PHP, tức là SQLSRV-5.9. Trong khi kết nối từ một trang PHP, nếu tôi sử dụng Xác thực máy chủ SQL, nó sẽ được kết nối ngay lập tức. Nhưng trong khi sử dụng Xác thực Windows, trình duyệt sẽ báo lỗi:
Không thể thiết lập kết nối.
Mảng ( [0] => Mảng ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 17 cho SQL Server][ Máy chủ SQL]Đăng nhập không thành công đối với người dùng 'NT AUTHORITY\IUSR'. [nội dung] => [Microsoft][Trình điều khiển ODBC 17 cho SQL Server][SQL Server]Đăng nhập không thành công đối với người dùng 'NT AUTHORITY\IUSR'.) [1] => Mảng ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Máy chủ]Đăng nhập không thành công cho người dùng 'NT AUTHORITY\IUSR'. [nội dung] => [Microsoft][ODBC Driver 17 cho SQL Server][SQL Server]Đăng nhập không thành công cho người dùng 'NT AUTHORITY\IUSR'. ) )
Môi trường của tôi là Windows 10 Pro, Phiên bản 21H2, 64-bit. Trong Máy chủ SQL của tôi, cả Xác thực Windows và Xác thực máy chủ SQL đều được bật và tôi có thể kết nối với máy chủ bằng cả hai thông qua SQL Server Management Studio. Vậy điều gì đang ngăn mã PHP của tôi kết nối với máy chủ bằng Xác thực Windows? Cả PHP và SQL Sever đều nằm trên cùng một PC. Tôi đang làm gì sai? Vì tôi là người mới sử dụng PHP, bạn có thể vui lòng làm rõ nó bằng một ví dụ đơn giản không?
Mã connect-db.php của tôi theo sau. Lưu ý cách tôi đã sử dụng chuỗi kết nối cho cả Xác thực máy chủ Windows và SQL.
?php
$serverName = "(cục bộ)"; // Tùy chọn sử dụng số cổng (1433 theo mặc định).
$connectionString = array("Database"=>"TestDB"); // Chuỗi kết nối Windows Authentication.
// $connectionString = array("UID"=>"sa","PWD"=>"sa","Database"=>"TestDB"); // Chuỗi kết nối Xác thực Máy chủ SQL.
$conn = sqlsrv_connect($serverName, $connectionString); // Kết nối với máy chủ.
if($conn===false) {
echo "Không thể thiết lập kết nối.<br/>";
chết(print_r(sqlsrv_errors(), true));
} khác {
echo "Kết nối thiết lập thành công.<br/>";
}
sqlsrv_close($conn); // Đóng tài nguyên kết nối.
?>
Cảm ơn và Trân trọng!