Questo è il codice standard quando si utilizza l'autenticazione di Windows:Perché è possibile connettersi a SQL Server Express locale ma non a SQL Server remoto da 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";
?>
I lavori di cui sopra per la connessione al server locale (SQL Server 2008 Express Edition), ma non per la connessione a un server della rete (SQL Server Standard Edizione). Il messaggio di errore è:
eccezione 'PDOException' con il messaggio 'SQLSTATE [28000]: [Microsoft] [SQL Server Native Client 10.0] [SQL Server] accesso non riuscito per utente' myDomain \ Geoffrey-PC $ '' in C: \ wamp \ www \ PhpProject1 \ index.php: 10 Traccia stack: # 0 C: \ wamp \ www \ PhpProject1 \ index.php (10): PDO -> __ construct ('sqlsrv: Server = n. .. ', null, null) # 1 {main}
la stringa di connessione per il server di rete è la stessa per il server locale, se non che il nome del server è simile a abc0120 e non finisce con \ SQLEXPRESS o qualsiasi altra cosa e il nome del database è diverso. Il nome del database che uso con il server di rete esiste.
Sto usando Apache 2.2.11. La pagina di MSDN SQLServer 2005 per How to: Connect Using Windows Authentication recita:
le credenziali con cui processo del server Web (o filo) è in esecuzione devono mappare un account di accesso di SQL Server valido per poter stabilire una connessione.
Forse questo è il problema.
Posso connettermi al server di rete utilizzando SQL Server Management Studio anche utilizzando l'autenticazione di Windows.
Inserire qui la stringa di connessione utilizzata per il server remoto. – Jacob
@cularis, è uguale a quello per il localserver, tranne che il nome del server è qualcosa come abc0120 (e non termina con \ SQLEXPRESS) e il nome del database è diverso (e il database esiste). – systemovich
Il processo PHP viene eseguito con un account noto all'istanza di SQL Server sul server remoto? In genere, Management Studio viene eseguito con il proprio account, ma il server Web no. – tdammers