У меня есть сервер Windows 2008 R2 Datacenter с IIS 7.5, MS SQL 2012 Express, использующий PHP 5.6, который пытается подключиться к созданной мной базе данных testDB через проверку подлинности Windows, но мне это не удается.
Вот мой PHP, который я использую для подключения к моему SQL Server\Instance:
<?php
$serverName = "nmc-intranet\intranetsql";
$connectionInfo = array("Database"=>"testDB", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if ( $conn ) {
echo "Connection successful.<br />";
} else {
echo "Connection failed.<br />";
die( print_r( sqlsrv_errors(), true));
}
?>
Когда я запускаю это, я получаю:
Ошибка подключения. Массив ( [0] => Массив ( [0] => 28000 [SQLSTATE] => 28000 1 => 18456 [код] => 18456 2 => [Microsoft][SQL Server Native Client 11.0][SQL Server]Ошибка входа для пользователя 'jaj'. [message] => [Microsoft][SQL Server Native Client 11.0 [SQL Server] Ошибка входа для пользователя «jaj». a-website-in-iis/" rel="nofollow noreferrer">1 => Array ( [0] => 28000 [SQLSTATE] => 28000 1 => 18456 [код] = > 18456 2 => [Microsoft][SQL Server Native Client 11.0][SQL Server]Ошибка входа пользователя ' jaj' [сообщение ] => [Microsoft][SQL Server Native Client 11.0][SQL Server]Ошибка входа для пользователя 'jaj'. ))
В MS SQL я добавил имя пользователя в «Безопасность»> «Логины» и сопоставил testDB и дал схему dbo. Пользователь также имеет роль сервера sysadmin. Я могу подключиться к testDB через CLI SQLCMD /S nmc-intranet\intranetSQL /E /d testDB
под именем пользователя. Я также могу подключиться к серверу\экземпляру через удаленный сеанс SSMS, поэтому я считаю, что свойства удаленного подключения верны. Я проверил шаги, упомянутые в ответе, найденном здесь.
Для IIS я пытался установить соединение разными способами, но и здесь безуспешно. Итак, я предполагал, что моя проблема заключается в ошибке входа в систему SQL. Я менял строку подключения с помощью диспетчера IIS в узле NMC-Intranet, а также в узле веб-сайта по умолчанию, и там у меня не получилось. Моя текущая строка подключения в web.config — это то, что было там по умолчанию после внесения изменений в IIS Manger, и выглядит следующим образом:
<connectionStrings>
<remove name="LocalSqlServer" />
<add connectionString="Server=nmc-intranet;Database=testDB;Integrated Security=true" name="LocalSqlServer" providerName="System.Data.SqlClient" />
</connectionStrings>
Я попытался изменить его на следующее, что нашел здесь, и до сих пор не имели успеха.
<connectionStrings>
<add connectionString="Server=.\SQLEXPRESS;Database=testDB;User ID=username;Password=password" name="LocalSqlServer" providerName="System.Data.SqlClient" />
</connectionStrings>
В IIS DefaultAppPool я также попытался изменить идентификатор модели процесса на имя пользователя/пароль. Я читал об аутентификации Kerberos здесь, но при доступе к интрасети с включенной функцией он запрашивает у пользователей имя пользователя/пароль даже для просмотра домашней страницы.
Надеюсь, я правильно задал этот вопрос, как нашел здесь, поскольку предыдущие вопросы не были хорошо приняты. Я провел много исследований, но я не знаю, что я мог упустить, и я сделал так много изменений и отменил их, поскольку они не работали, я просто надеюсь на какое-то направление того, что мне может понадобиться попробовать дальше. Я, скорее всего, что-то неправильно истолковал, так как не имею полного представления о том, как нужно устанавливать соединение, и пропустил шаг или упустил какую-то информацию.
Я здесь не профессионал, просто пытаюсь собрать все это вместе из Интернета, заставить его работать и, надеюсь, чему-то научиться.
Конец игры Я хочу, чтобы пользователи входили в интрасеть через AD и загружали файлы, создавали свои собственные сообщения, создавали своего рода каталог, которым можно было бы управлять через интрасеть, возможно, имели IM (?) и действительно просто обучение опыт.
Спасибо.