Начало » Использование СУБД » Microsoft SQL Server » Не хочет работать Linked Server с PostgreSQL (Вообще не хочет) 
	
		
		
			| Не хочет работать Linked Server с PostgreSQL [сообщение #5610] | 
			Thu, 24 October 2024 11:21   | 
		 
		
			
				
				
				
					
						  
						DaniilGray
						 Сообщений: 19 Зарегистрирован: October 2024 
						
					 | 
					Junior Member  | 
					 | 
		 
		 
	 | 
 
	
		Дано: MS SQL Server (в домене Windows) и Postgresql на Linux. 
К Postgresql из Windows подключение через учётки домена Windows с использованием Kerberos (на самом Postgre учётки занесены в группу krb_users). 
На сервере, где стоит MS SQL Server, установлены odbc-драйвера Postgresql, и создан системный источник данных. 
Далее - на Windows-сервере, где стоит MS SQL Server, через удалённый рабочий стол запускаю Management Studio, подключаюсь к MS SQL Server и: 
1) На основе системного источника данных в MS SQL Server создаю Linked Server к Postgresql; 
2) добавляю в разделе безопасность Linked Server-а юзера с олицетворением (свою windows-учётку); 
3) запускаю запрос к Linked Server-у - всё работает. 
4) отключаю удалённый рабочий стол. 
 
На рабочей машине запускаю Management Studio под той же учёткой, что и на Windows-сервере, подключаюсь к MS SQL Server, запускаю тот же запрос, что и во время подключения к windows-серверу через удалённый рабочий стол, и получаю ошибку:  
В пакете безопасности отсутствуют учетные данные. 
 
И как с этим бороться?
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	
		
		
			| Re: Не хочет работать Linked Server с PostgreSQL [сообщение #5660 является ответом на сообщение #5612] | 
			Thu, 31 October 2024 22:13   | 
		 
		
			
				
				
				
					
						  
						jffulcrum
						 Сообщений: 10 Зарегистрирован: September 2024 
						
					 | 
					Junior Member  | 
					 | 
		 
		 
	 | 
 
	
		Пока у вас сеанс на самом Windows сервере с SQL - данные токена берутся на самом деле от сеанса, а не от того, что вы там в management studio вбили. Вы сеанс закрыли - и токен пропал. Вам надо одно из двух: 
1. Предоставить доступ на Linux для учетной записи, под которой работает служба SQL Server. Обычно это локальная учетка службы, то есть доступ предоставляется учетной записи компьютера в домене 
2. Делегировать учетной записи учетной записи, под которой работает служба SQL Server (учетной записи этого компьютера в общем случае) права на представление выбранной учетной записи для подключения к Linux. Тогда служба SQL Server сама сможет, пользуясь сохранёнными данными, получать токен. Делается это в AD. 
 
1а. Есть, конечно, и вариант просто держать нужный сеанс пользователя на сервере. Например, с помощью службы, сделанной через srvany, висеть может хоть cmd.exe - пока процесс в памяти, в памяти будет и токен, и SQL сможет его брать. Не рекомендуется, т.к. при смене пароля или любых атрибутов учетной записи пользователя токен превратится в тыкву и придется возиться со службой снова.
		
		
		[Обновления: Thu, 31 October 2024 22:16] Известить модератора  
 |  
	| 
		
	 | 
 
 
 |   
Переход к форуму:
 
 Текущее время: Tue Nov 04 16:05:16 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.00615 секунд 
 |