Đây là mã chuẩn khi sử dụng cửa sổ xác thực:Tại sao tôi có thể kết nối với SQL Server Express cục bộ nhưng không kết nối với SQL Server từ xa từ PHP?
<?php
try {
$conn = new PDO("sqlsrv:Server=geoffrey-pc\SQLEXPRESS;Database=books",
NULL, NULL);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo $e;
die("Error connecting to SQL Server");
}
echo "Connected to SQL Server\n";
?>
Các công trình trên để kết nối đến máy chủ địa phương (SQL Server 2008 Express Edition), nhưng không phải để kết nối với một máy chủ trên mạng (SQL Server Standard Phiên bản). Các thông báo lỗi là:
ngoại lệ 'PDOException' với thông điệp 'SQLSTATE [28000]: [Microsoft] [SQL Server Native Client 10.0] [SQL Server] Đăng nhập thất bại cho dùng' mydomain \ GEOFFREY-PC $ '.' trong C: \ wamp \ www \ PhpProject1 \ index.php: 10 Dấu vết ngăn xếp: # 0 C: \ wamp \ www \ PhpProject1 \ index.php (10): PDO -> __ xây dựng ('sqlsrv: Máy chủ = n. .. ', NULL, NULL) # 1 {main}
Chuỗi kết nối cho máy chủ mạng giống với máy chủ cục bộ, ngoại trừ tên máy chủ tương tự abc0120 và không kết thúc bằng \ SQLEXPRESS hoặc bất cứ điều gì khác, và tên cơ sở dữ liệu là khác nhau. Tên cơ sở dữ liệu tôi sử dụng với máy chủ mạng không tồn tại.
Tôi đang sử dụng Apache 2.2.11. Trang SQLServer 2005 MSDN cho How to: Connect Using Windows Authentication lần đọc:
Thông tin xác thực mà quá trình máy chủ Web (hoặc luồng) đang chạy phải ánh xạ tới đăng nhập SQL Server hợp lệ để thiết lập kết nối.
Có thể đó là vấn đề.
Tôi có thể kết nối với máy chủ mạng bằng SQL Server Management Studio cũng sử dụng xác thực cửa sổ.
Đặt chuỗi kết nối bạn sử dụng cho máy chủ từ xa tại đây. – Jacob
@cularis, Nó giống với tên máy chủ cục bộ, ngoại trừ tên máy chủ là abc0120 (và không kết thúc bằng \ SQLEXPRESS) và tên cơ sở dữ liệu khác (và cơ sở dữ liệu tồn tại). – systemovich
Quá trình PHP có chạy dưới một tài khoản biết đến cá thể SQL Server trên máy chủ từ xa không? Thông thường, Management Studio chạy dưới tài khoản của riêng bạn, nhưng máy chủ web thì không. – tdammers