Ошибка подключения: SQLSTATE [CE100]: [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Система не может найти указанный файл

Прежде всего, привет, я пытаюсь получить доступ к данным из базы данных, которая всегда зашифрована, я объясню шаг за шагом, что я сделал, шаг первый: я открываю сервер SQL и включаю шифрование столбцов для таблицы, которую я хочу. шаг второй: я пробовал, работает ли он нормально в БД или нет, и в результате он работает нормально, если я включу параметр «всегда шифровать», он вернет расшифрованные данные. шаг третий: напишите мой код, и это мой код


<?php
$hostname_DB= "localhost"; 
$database_DB= "test";
$username_DB= "***";                                        
$password_DB= "***";    
    
try {
    $connection = new PDO("sqlsrv:Server=$hostname_DB;Database=$database_DB;ColumnEncryption = Enabled;LoginTimeout=100000", $username_DB, $password_DB);
        $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $connection->setAttribute(PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 1000000);

    $query = "select TOP (10) second_name_a FROM employees";
    $stmt = $connection->query($query);

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        print_r($row);echo'<br>';

    }
} catch (PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}

?>

шаг четвертый: я резервирую эту ошибку (ошибка подключения: SQLSTATE [CE100]: [Microsoft] [драйвер ODBC 17 для SQL Server] [SQL Server] система не может найти указанный файл.) но когда я запускаю тот же код в CMD, он работает нормально, на двух изображениях первое без параметра ColumnEncryption, а второе - с параметром ColumnEncryption

первое изображение:

введите здесь описание изображения

второе изображение:

введите здесь описание изображения

примечание: (я использую IIS (Internet Information Services) с PHP 8.0.6, и я установил драйверы Microsoft для PHP для SQL Server (php_pdo_sqlsrv_80_ts_x64.dll/php_sqlsrv_80_ts.dll) и включил расширение из php.ini);

Я пытаюсь обновить SQL (MSSQlSERVER), включить именованные каналы и проверить настройку состояния пользователя (разрешение на подключение к ядру базы данных), это Grant, и войдите в систему, чтобы включить

В итоге ждем расшифрованных данных и спасибо за помощь

Обновление (15.05.2023): Я пробовал в другой БД, и она работает нормально, я думаю, что проблема в сортировке, потому что первая (с которой у меня проблема) должна сопоставлять Arabic_CI_AS, а вторая (отлично работает) должна сопоставлять SQL_Latin1_General_CP1_CI_AS. но я не могу преобразовать подборку для первого. что мне делать, чтобы шифрование всегда работало с подборкой Arabic_CI_AS? примечание: при постоянном шифровании сортировка для столбца будет изменена с Arabic_CI_AS на Arabic_BIN2

Обновление (17.05.2023): Ошибка изменилась на набор ключей connot find

У вас установлен этот драйвер? Драйвер ODBC 17 для SQL Server. Если нет, то скачайте и установите скачать

Julian Fagadau 14.05.2023 23:49

Используете ли вы точно такие же учетные данные (имя пользователя и пароль) в версии кода IIS, что и при успешном выполнении в CLI? Вошедшая в систему учетная запись должна иметь права доступа к базе данных VIEW ANY COLUMN MASTER KEY DEFINITION и VIEW ANY COLUMN ENCRYPTION KEY DEFINITION, а также доступ к CMK и CEK, которые защищают зашифрованные столбцы. Ссылка: Использование Always Encrypted с драйверами PHP для SQL Server

AlwaysLearning 15.05.2023 03:19

да, у меня есть драйвер ODBC 17 для SQL Server на моем устройстве, я пробовал в другой БД, и он отлично работает, также я даю всем разрешение на доступ к сертификату

Hesham Mahmoud 15.05.2023 07:22

Вы можете попробовать использовать расширение SQLSRV вместо PDO. SQLSRV — это расширение PHP, предоставляющее драйверы для подключения к базам данных Microsoft SQL Server. Расширение SQLSRV разработано специально для Microsoft SQL Server и обеспечивает лучшую совместимость, чем универсальное расширение PDO.

YurongDai 15.05.2023 11:25

та же проблема, он не вернул данные (second_name_a)

Hesham Mahmoud 15.05.2023 12:49

Пожалуйста, уточните вашу конкретную проблему или предоставьте дополнительную информацию, чтобы выделить именно то, что вам нужно. Как сейчас написано, трудно точно сказать, о чем вы спрашиваете.

Community 15.05.2023 13:22

Я хочу использовать всегда зашифрованный на своем веб-сайте, когда я его включил, в ssms нет проблем, данные будут возвращены в расшифрованном виде, но когда я делаю тот же запрос в PHP, у меня возникает эта ошибка (ошибка подключения: SQLSTATE [CE100]: [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Системе не удается найти указанный файл.). Я пробовал каждое решение в Интернете, но это не сработало. Я хочу расшифровать данные, поступающие из БД, используя всегда шифрование

Hesham Mahmoud 15.05.2023 13:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны изменить анонимную аутентификацию в IIS с IUSR на свою учетную запись пользователя, вы можете узнать свою учетную запись, открыв CMD, и введите эту команду (whoiam).

Другие вопросы по теме