Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
JMLabs
Member

Откуда:
Сообщений: 66
Здравствуйте!
У меня SQL 2008R2, я сделал связанную базу (EXEC sp_addlinkedserver). В SSMS я могу делать запросы к связанной базе, но почему-то то же самое через джоб выдает ошибку:
Message
Executed as user: NT AUTHORITY\SYSTEM. Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. [SQLSTATE 28000] (Error 18456).  The step failed.

Перепробовал все, не понимаю откуда всплывает ANONYMOUS LOGON. В гугле тоже нет внятного ответа.
На другом аналогичном сервере у меня все работает на ура.
Подскажите куда копать...
24 июл 18, 18:30    [21599244]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
Col
Member

Откуда: Торонто
Сообщений: 177
JMLabs,
У Вас агент бегает под лоцал систем, ликнованый сервер о нем ничего не знает.
24 июл 18, 19:01    [21599284]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
vikkiv
Member

Откуда: London
Сообщений: 2620
JMLabs,

во первых для LinkedServer есть настройки свойств безопасности под каким логином авторизириваться на другом сервере при разных сценариях (Not be made, Be made without using a security context, Be made.. и т.д.)

во вторых для шага в твоём таске тоже есть настройки под каким пользователем исполняется процесс.

выбор решения между первым и вторым (но список далеко не полный) вариантами - зависит от внутренних стандартов и приоритетов проекта для которого это делаешь.
24 июл 18, 19:07    [21599293]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
JMLabs
Member

Откуда:
Сообщений: 66
Спасибо за советы, но как мне решить проблему?

Действительно SQL Server Agent бегает под LocalSystem, нужно запустить от другого имени?

Для линкованного сервера я создал логин командой:
exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'7.3.11.15,1433',@useself=N'False',@locallogin='sa',@rmtuser='sa',@rmtpassword='123123123'

вероятно этого не достаточно

Где настраивается под каким пользователем выполняется шаг, я тоже не нашел...
25 июл 18, 00:34    [21599909]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
vikkiv
Member

Откуда: London
Сообщений: 2620
JMLabs,

сам Linked_Server можно скриптом / процедурами настроить:
sp_addlinkedserver
sp_addlinkedsrvlogin
или в ручную:
SSMS -> Object Explorer -> Server Objects -> Linked Servers -> My_X_Server -> Properties -> Security
и там выбрать / настроить что нужно для твоей учётки под которой агент работает

Шаг агента тоже или через SSMS->SQL_Server_Agent->Jobs->My_X_Job->Steps(T-SQL)->Edit->Advanced->Run as user
или скриптом
exec msdb.dbo.sp_add_jobstep ... @database_user_name=N'my_x_domain\my_x_user'

но в зависимости от приоритетов безопасности может агента перанастраивать и не нужно (если вдруг ограничений/требований к безопасности особых нет) - хотя за такое админам (или кто там у вас за это отвечает) по рукам как минимум настучать
25 июл 18, 01:51    [21599998]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
Col
Member

Откуда: Торонто
Сообщений: 177
JMLabs,
Тот редкий случай когда проще сделать чем объяснить как.
В общем читайте, лучше чем там я сформулировать не смогу, там всего один ответ:
https://stackoverflow.com/questions/14993639/failed-scheduling-a-task-involving-linked-servers-with-sql-server-agent
25 июл 18, 03:39    [21600015]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
JMLabs
Для линкованного сервера я создал логин командой:
exec master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'7.3.11.15,1433',@useself=N'False',@locallogin='sa',@rmtuser='sa',@rmtpassword='123123123'
Почитайте внимательно документацию о параметре @locallogin.
25 июл 18, 09:50    [21600287]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
JMLabs
Member

Откуда:
Сообщений: 66
Col
В общем читайте, лучше чем там я сформулировать не смогу, там всего один ответ:
https://stackoverflow.com/questions/14993639/failed-scheduling-a-task-involving-linked-servers-with-sql-server-agent

invm
Почитайте внимательно документацию о параметре @locallogin.

vikkiv
сам Linked_Server можно скриптом / процедурами настроить


Большое спасибо за дельные советы, действительно беда была в @locallogin, помогло
EXEC sp_addlinkedsrvlogin @rmtsrvname=N'7.3.11.15,1433',@useself=N'False',@locallogin='NT AUTHORITY\SYSTEM',@rmtuser='sa',@rmtpassword='123123123'

Осталось небольшое белое пятно - где посмотреть список логинов, добавленных процедурой sp_addlinkedsrvlogin, может быть там уже зоопарк логинов и надо бы почистить процедурой sp_droplinkedsrvlogin
25 июл 18, 16:48    [21601946]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
JMLabs
Осталось небольшое белое пятно - где посмотреть список логинов
https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-helpremotelogin-transact-sql?view=sql-server-2017
25 июл 18, 17:06    [21602011]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
invm
JMLabs
Осталось небольшое белое пятно - где посмотреть список логинов
https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-helpremotelogin-transact-sql?view=sql-server-2017


link above
Б. Получение справки по всем удаленным пользователям
В следующем примере отображаются сведения обо всех удаленных пользователях на всех удаленных серверах, известных локальному серверу.

EXEC sp_helpremotelogin;


а у самих в процедуре:
create procedure sys.sp_helpremotelogin  
@remoteserver sysname = NULL, /* remote server name */  
@remotename sysname = NULL  /* remote login name */  
as  
set nocount on  
  
--  If no server given, get 'em all.  
if not exists (select * from master.dbo.sysservers s, master.dbo.sysremotelogins r  
 where s.srvid = r.remoteserverid  
  and (@remoteserver is null or s.srvname = @remoteserver ))  
 begin  
  if @remoteserver is null  
   begin  
    raiserror(15200,-1,-1)  
    return (0)  
   end  


т.е. справка призывает запустить без параметров вообще,
dbo.sysremotelogins пустое
и получите вы

Msg 15200, Level 16, State 1, Procedure sp_helpremotelogin, Line 14 [Batch Start Line 6]
There are no remote servers defined.


хороши шуточки.

лучше все получать кустарно:
select s.name, l.*
from sys.linked_logins l
     join sys.servers s
	    on s.server_id = l.server_id
25 июл 18, 17:26    [21602090]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить