Вы пытаетесь подключиться к SQL Серверу, используя windows
аутентификацию. В этой ситуации для подключения к серверу используется идентификатор процесса или идентификатор потока веб-сервера (если веб-сервер использует олицетворение). Когда вы выполняете этот оператор в инструменте клиента (SQL Server Management Studio), вы используете идентификацию конечного пользователя.
Вам необходимо сделать следующее:
- grant разрешения для идентификации процесса веб-сервера или
- использование
sql
аутентификации для подключения к SQL Server
С помощью этого простого сценария вы можете получить имя пользователя, которое пытается подключиться к серверу:
<?php
$server = 'servername\SQLEXPRESS';
$cinfo = array(
"Database"=>'Test_DB'
);
$conn = sqlsrv_connect($server, $cinfo);
if( $conn === false )
{
echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
exit;
}
$sql =
"SELECT 'SUSER_SNAME' AS [NAME], CONVERT(nvarchar(128), SUSER_SNAME()) AS [VALUE]".
"UNION ALL ".
"SELECT 'SUSER_NAME' AS [NAME], CONVERT(nvarchar(128), SUSER_NAME()) AS [VALUE]".
"UNION ALL ".
"SELECT 'USER_NAME' AS [NAME], CONVERT(nvarchar(128), USER_NAME()) AS [VALUE]".
"UNION ALL ".
"SELECT 'USER_ID' AS [NAME], CONVERT(nvarchar(128), USER_ID()) AS [VALUE]";
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false ) {
echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
exit;
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
echo $row['NAME'].": ".$row['VALUE']."</br>";
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>