Мне придется немного угадать, чтобы помочь вам, но я надеюсь дать вам достаточно контекста, чтобы понять, что происходит, чтобы вы могли продолжить отладку.
Когда вы подключаетесь к SQL Server с помощью встроенной аутентификации,Контроллер домена выдает токен для общения с SQL, и он используется для аутентификации вашего соединения клиента с процессом SQL Server.Под прикрытием Windows может использовать либо NTLM, либо Kerberos для этого рукопожатия.Вы можете прочитать больше об этом здесь в этой записи блога: NTLM vs. Kerberos Blog .Этот выбор протокола имеет значение при попытке использовать связанные серверы, поскольку он должен затем аутентифицироваться для чего-то другого по сети.
На данный момент имеет значение, какие учетные данные используются для запуска SQL Server (обычно для просмотра в качестве службы в окне служб).Если вы используете SQL как локальную систему или сетевую службу или что-то еще, определенное окнами (а не как определенный пользователь в сети), он может иметь или не иметь разрешения для общения с вашим целевым удаленным сервером (будь то postgres иличто-то другое).Когда вы используете Kerberos и включаете делегирование (что необходимо сделать администратору домена), у вас может быть «поток» исходных интегрированных учетных данных аутентификации через ссылку на связанный сервер к следующему соединению.NTLM не делает этого.Поэтому обычным сценарием является создание в локальном SQL Server карты с указанием учетных данных, которые следует использовать при обращении к удаленному связанному серверу.
Если вы разговариваете с драйвером ODBC, то, скорее всего, вы используетеmsdasql (OLEDB к мосту ODBC), а затем также должен пройти через свой стек аутентификации.Насколько я помню, я слишком долго думал, поддерживает ли он вообще интегрированную аутентификацию, а тем более делегирует в Kerberos.Тем не менее, вы можете продолжить отладку этой проблемы, если вы:
- рассмотрите, какая учетная запись выполняет SQL
- рассмотрите, какой механизм используется для выполнения интегрированной аутентификации в sql и будет ли этоРабота с делегированием
- определяет, какие учетные данные используются для установления исходящего соединения с вашей целью ODBC.Вы должны быть в состоянии отладить большую часть этого с помощью механизма профилировщика, поскольку существует набор событий IIRC распределенного запроса / связанного сервера.
Я не могу конкретно поговорить с вашим поставщиком postgres, но это должнодать вам еще несколько инструментов для отладки.Надеюсь, что это поможет вам сделать еще один шаг.