2

Я пытаюсь преобразовать базу данных Access в бэкэнд SQLServer. Я увеличил базу данных, и все работает на сервере, но я не могу получить к ней удаленный доступ.

Я использую SQLServer Express 2005 на Windows Server 2003. Сервер не настроен как контроллер домена и не подключен к домену. Компьютеры, с которых я пытаюсь получить доступ к серверу, являются частью домена, но локальных контроллеров домена нет. Я нахожусь в удаленном месте, и компьютеры настроены и подключены к домену в домашнем офисе, а затем отправлены нам. Обычно мы заходим с помощью кэшированных учетных данных и VPN в домашний офис, когда нам нужен доступ к домену.

Я могу использовать Remote Desktop Connection для доступа к серверу 2k3, на котором запущен SQLServer. Если я войду на сервер под своим именем пользователя, я смогу открыть базу данных, получить к ней доступ через доверенное соединение, и база данных будет работать. Однако, если я пытаюсь запустить базу данных локально, я получаю диалоговое окно Вход в сервер. Я не могу использовать доверенное соединение, потому что мой локальный логин находится в домене домашнего офиса и не распознается машиной SQLServer. Если я пытаюсь использовать имя пользователя / пароль, локальный для SQLServer, я получаю ошибку при входе в систему. Я попытался ввести имя пользователя как "имя пользователя", «рабочая группа / имя пользователя» (где "рабочая группа" - это имя рабочей группы на сервере SQLServer), «имя_сервера / имя пользователя» и «имя пользователя@1.2.3.4», где «1.2. 3.4 "- это IP-адрес SQLServer. Во всех случаях я получаю ошибку входа в систему. Как я уже сказал, я могу войти на сервер через Remote Desktop Connection с тем же именем пользователя и паролем и использовать базу данных, поэтому разрешения для имени пользователя выглядят корректными как для удаленного подключения, так и для доступа к базе данных. Не уверен, куда идти отсюда, и любая помощь будет оценена.

2 ответа2

1

Фон

Microsoft SQL Server поддерживает два разных метода проверки подлинности: проверка подлинности SQL Server и проверка подлинности Windows. Важно понимать, в чем разница с настройкой SQL Server.

Для аутентификации SQL Server сам SQL Server должен поддерживать базу данных имен пользователей и паролей, которым разрешен доступ к базе данных. Процесс SQL Server отвечает за аутентификацию пользователей, сравнивая имя пользователя и пароль (хэш) с собственной базой данных. Этот метод входа не позволяет использовать единый вход, поскольку он не интегрирован с Windows, а предоставленные учетные данные полностью не связаны с учетными данными учетной записи Windows (локальной или локальной).

Проверка подлинности Windows использует стандартную проверку подлинности Windows для доступа к базе данных. SQL Server по-прежнему отвечает за авторизацию («Разрешен ли Боб?"), но Windows теперь становится ответственным за аутентификацию (" Это действительно Боб?"«). Вы не можете вводить учетные данные при использовании аутентификации Windows; Вот почему поля ввода имени пользователя и пароля отключаются в SQL Server Management Studio при выборе проверки подлинности Windows. Какой бы пользователь ни выполнял клиентскую программу, так же как и пользователь, прошедший проверку подлинности на SQL Server (вы можете переопределить, какой пользователь проходит проверку подлинности, используя runas /netonly).

Когда программа пытается получить доступ к SQL Server через проверку подлинности Windows, SQL Server просит Windows подтвердить подлинность пользователя. Если это локальный пользователь, Windows проверяет свою локальную базу данных пользователей и возвращает да или нет. Если учетная запись является учетной записью домена, а компьютер присоединен к любому домену, Windows выполняет аутентификацию в Active Directory. Active Directory проверит пользователя, если он существует где-то в доверенном лесу (либо в текущем домене, либо в доверенном домене).

Ваша ситуация

Ваша копия SQL Server работает на компьютере вне домена. Когда вы подключаете удаленный рабочий стол к компьютеру, вы запускаете программы как локальный пользователь. Когда вы используете "Доверенное соединение" (что в действительности означает "Использовать проверку подлинности Windows"), Windows знает, кто является вашей локальной учетной записью, и проверяет ее. SQL Server позволяет вам получить доступ.

Когда вы запускаете программу на компьютере, присоединенном к домену, и пытаетесь пройти проверку подлинности с помощью проверки подлинности Windows, вы пытаетесь пройти проверку подлинности на компьютере, не являющемся доменом, с использованием учетных данных домена. Компьютер без домена не знает, как проходить аутентификацию через домен (по определению, он не доверяет домену), поэтому аутентификация не проходит.

Возможные решения

  1. Используйте аутентификацию SQL Server. Используйте инструмент, такой как SQL Server Management Studio, для создания имен входа SQL Server для каждого пользователя, которому требуется доступ. Вы не сможете использовать флажок "Использовать доверенное соединение", и пользователям всегда нужно будет вводить свои учетные данные для SQL Server. В зависимости от того, какая программа пытается получить доступ к SQL Server, она может предоставить какой-либо метод для сохранения учетных данных в реестре, или пользователи могут защитить локальное хранилище, чтобы пользователю не приходилось каждый раз вводить их.

  2. Когда вы запускаете SQL Server Management Studio локально, запустите его с помощью команды runas следующим образом:

    runas /user:username /netonly "C:\Path\to\SSMS.exe"
    

    Это позволит вам использовать проверку подлинности Windows, поскольку вместо того, чтобы передавать свои учетные данные, вошедшие в систему, вы будете передавать учетные данные для учетной записи "username". Эта учетная запись должна существовать на целевой машине.

  3. Присоедините компьютер с SQL Server к домену и используйте. (Вам также может потребоваться запустить SQL Server как учетную запись домена, а не как локальную учетную запись, но я не уверен.) На этом этапе SQL Server сможет проверять подлинность пользователей с помощью Active Directory, а "Использовать доверенное соединение" будет работать без ввода учетных данных. Конечно, вам все равно нужно решить, какие пользователи авторизованы для доступа к базе данных; Вы можете использовать SQL Server Management Studio для этого.

  4. Продвиньте сервер, на котором запущен SQL Server, на контроллер домена нового домена (единственным участником которого он является). Затем вы можете создать доверие между двумя доменами, чтобы компьютер SQL Server мог отправлять учетные данные в другой домен для проверки подлинности, и проверка подлинности Windows будет работать. Нет необходимости вводить учетные данные. Вам все еще нужно будет авторизовать пользователей в SQL Server Management Studio.

0

Включили ли вы оба соединения TCP/IP и разблокировали все соответствующие порты (я думаю, 1433, но я думаю, что он меняется / автоматически увеличивается) на вашем брандмауэре?

Наконец, если вы хотите получить доступ к рабочей группе, убедитесь, что для SQL-сервера установлен режим смешанного доступа, а не только встроенная защита. Кроме того, вам может потребоваться вручную создать учетные записи для каждого пользователя / группы на сервере SQL.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .