powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка анонимной аутентификации с помощью Windows Task Schelduler
25 сообщений из 25, страница 1 из 1
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911498
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всех с Новым годом друзья!
Бьюсь уже с прошло года с проблемой. Можете открыть холивар по моему подходу даже)
Вообщем, есть джоб в таск шелдулере сервера. Он создает файл с датой, потом идет по инстансам скулей и собирает размеры БД.
Но дело в том что ручками я запускаю с шелла, все работает а по расписанию не работает и выходит ошибка.
Код: sql
1.
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. Reason: Could not find a login matching the name provided. [CLIENT: 



Сам скриптик:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$exportfile = "C:\SizeDB\grow\allinstances $(get-date -f yyyy-MM-dd).txt"
$QueryFmt= "SELECT 
	  @@servername AS Instance
    , database_name = DB_NAME(database_id)
    , CAST(SUM(CASE WHEN type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(8,2)) as log_size_mb
    , CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(8,2)) as row_size_mb
    , CAST(SUM(size) * 8. / 1024 AS DECIMAL(8,2)) as total_size_mb
FROM sys.master_files
GROUP BY database_id
"

Invoke-Sqlcmd -ServerInstance Server1 $QueryFmt | Export-CSV $exportfile -Encoding UTF8
Invoke-Sqlcmd -ServerInstance Server2 $QueryFmt | Export-CSV $exportfile -Encoding UTF8 -Append



Джоб запускается от юзера у которого есть все права, тем более ручками все пашет. Т.е. скорее всег ошелдулер не прокидывает кренденшиналы а буриться анонимно, как это изменить можно?
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911510
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

Сейчас дергая powershell.exe вышел до ошибки логина, почему то он не понимает что это виндовая учетка?
Message
Login failed for user 'DOMAIN\User'. Reason: Attempting to use an NT account name with SQL Server Authentication. [CLIENT: xxx.xx.xx.xxx]
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911518
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP
Den_KP,

Сейчас дергая powershell.exe вышел до ошибки логина, почему то он не понимает что это виндовая учетка?
Message
Login failed for user 'DOMAIN\User'. Reason: Attempting to use an NT account name with SQL Server Authentication. [CLIENT: xxx.xx.xx.xxx]


Дело скорее всего в connection string. Уберите Integrated Security=SSPI;
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911521
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

Подскажите а где убирается? В скрипте нет в стринге, в инстансе тоже не вижу(
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911531
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ведь мне наоборот нужно через доменную ходить) Я и включал и выключал.

Только когда явно указываю логин и пароль плюс ntegrated Security=false работает
Но я не хочу светить логин и пароль. Тем более зачем тогда в Tash Schelduler я указываю логин доменный и пароль, если он его не прокидывает?
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911533
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

Надо разбираться с invoke-sqlcmd. Там ещё есть Credentials

https://docs.microsoft.com/en-us/powershell/module/sqlserver/invoke-sqlcmd?view=sqlserver-ps
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911537
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP

Сейчас дергая powershell.exe вышел до ошибки логина, почему то он не понимает что это виндовая учетка?

потому что кто-то указал еще и пароль?
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911543
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP

...
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
...
Джоб запускается ... скорее всег ошелдулер не прокидывает кренденшиналы

чем запускаете-то, агентом что ли?
конечно он ничего "не прокидывает", оттуда и ANONYMOUS LOGON.
ищите на double hop и Kerberos delegation
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911548
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаю с помощью Windows Schelduler
Там джоб с скриптом который в начале написал.

Вот как можно сюда прокинуть Учетку без пароля или ту что запускает джоб (они доменные) чтобы работало
Invoke-Sqlcmd -ServerInstance Server1 $QueryFmt | Export-CSV $exportfile -Encoding UTF8
Invoke-Sqlcmd -ServerInstance Server2 $QueryFmt | Export-CSV $exportfile -Encoding UTF8 -Append
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911829
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть идеи?
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911846
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP
Есть идеи?
Раз при запуске руками это выполняется, а при запуске из шедулера нет, то разница в том, от имени кого идёт запуск.
Выясняйте это.
К сиквелу это не имеет отношения, соответственно, лучше спрашивать в разделе Администрирование ОС - Windows
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911847
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

Ну как минимум - можно прокинуть учетку, если сформировать строку подключения не используя стандартные PowerShell'льные методы - можно создать свой .net'овский экземпляр объекта к, примеру, так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
$cred = Get-Credential

$sqlCred = New-Object 
System.Data.SqlClient.SqlCredential($cred.username,$cred.password)

$NewDbConnection = new-object System.Data.SqlClient.SqlConnection("Data Source = '$Destination_SqlInstance'; Initial Catalog = '$Destination_Database';)
$NewDbConnection.Credential = $sqlCred 
$NewDbConnection.Open()

$TruncateStatement = "TRUNCATE TABLE [dbo].[LS_Monitoring_status]"

$NewDbCommand = $NewDbConnection.CreateCommand()
                $NewDbCommand.CommandText = $TruncateStatement
                $NewDbCommand.ExecuteNonQuery() | OUT-NULL



У меня в примере TRUNCATE, но по-сути неважно - главное, что у объекта команды есть метод исполнить код - или прямой сиквельный или хранимую процедуру
Ну и вывод в итоге запихать в файл
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911849
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP
Запускаю с помощью Windows Schelduler
Я вот никогда с этим не сталкивался, но чую, что нужно как то указывать пользователя и пароль, когда вы планируете задачу в шедулере.
Иначе откуда шедулер узнает, под кем запускать???

Вот, например, что то похожее: https://social.technet.microsoft.com/Forums/en-US/4692e927-6962-4327-b393-964a57fa38fe/automating-with-task-scheduler-using-service-account-active-directory-windows-login-to-connect-to?forum=ITCG
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911852
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

Вообще - в свое время писал несколько подобных пакетов, которые бегали по сиквельной инфре, забирали кучу инфы, - все, что System Center не умеет, и складывали бы в единый репозиторий для последующего мини ХД и SSRS наверху этого всего. И на SSIS/.NET писал, и на голом PS. Не помню, чтобы чем-то еще заморачивался бы в плане прокидывания учетки, кроме SPN и Kerberos delegation
Жалко, уже не работаю в тех компаниях, - не посмотреть сейчас вживую, как оно там крутится и какие настройки - только по воспоминаниям сейчас

Попробуйте сравнить две УЗ, из-под которых ранятся скрипты - вашу, интерактивную, и ту, что имперсонирует виндовый джоб.
1) Проверьте SPN в ADSIedit.msc - у каждой из них
2) Если SPN создан, то в объекте УЗ (компьютера и пользователя) - в оснастке ADUC появляется вкладка "Delegation". Поставьте в ней опцию "Trust this user for delegation to any service"
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911853
Gerros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP
Есть идеи?
Которую из этих двух ошибок вы пытаетесь исправить?
1.Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. Reason: Could not find a login matching the name provided.2.Login failed for user 'DOMAIN\User'. Reason: Attempting to use an NT account name with SQL Server Authentication.
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911855
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

Вообще - обычно делается как - в домене создается специальный сервисный аккаунт со сложным паролем.
В виндовом джобе указывается этот аккаунт в качестве RunAs - "Run whether user is logged on or not" и при нажатии ОК - появляется окно для ввода пароля. Пароль сохраняется во внутрях в криптованомм виде, и вуаля.
Все последующие коннекшн-стринги, где бы и на каком уровне они бы не были - хоть в SSIS-пакете, который запускается из этого джоба, хоть PS, хоть .NET-код внутри SSIS-пакетов - все это имперсонирует контекст безопасности, заданный в этой одной центральной точке, если, конечно, указана опция "use Windows authentication"
Я лично всегда старался всю эту инфру и модульность проектировать так, чтобы по минимум настройками и захардкоденными учетками обходиться
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911865
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha
alexeyvg,

Вообще - обычно делается как - в домене создается специальный сервисный аккаунт со сложным паролем.
В виндовом джобе указывается этот аккаунт в качестве RunAs - "Run whether user is logged on or not" и при нажатии ОК - появляется окно для ввода пароля. Пароль сохраняется во внутрях в криптованомм виде, и вуаля.
Все последующие коннекшн-стринги, где бы и на каком уровне они бы не были - хоть в SSIS-пакете, который запускается из этого джоба, хоть PS, хоть .NET-код внутри SSIS-пакетов - все это имперсонирует контекст безопасности, заданный в этой одной центральной точке, если, конечно, указана опция "use Windows authentication"
Я лично всегда старался всю эту инфру и модульность проектировать так, чтобы по минимум настройками и захардкоденными учетками обходиться
Спасибо, буду знать.
Никогда не было необходимости запускать что то под Windows Task Schelduler, всегда использовал сиквельный агент, но в общем предполагал, что как то так.

Вот в сервисах тоже выполнение идёт без сессии, и под специальным сервисным аккаунтом, и тут должно быть что то близкое, ведь во время выполнения задания пользователь не залогинен (а если и залогигнен, то, в общем случае, их несколько, и не тот, который нужен).
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911889
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повторное собщение
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911890
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может агент от локальной УЗ работает?
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911900
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha,

Так дело в том что как раз у меня спец. учетка в Run As стоит. Проблема в том что когда идет запуск шелдулера он почему то игнорирует эту учетку и идет анонимной аутентификацией и получает от скуля ошибку - Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
А когда я явно в скрипте указываю логин и пароль - то все прекрасно работает. Проблема в том что приходиться светить пароль. А ранее я такую же штуку видел в одной компании у них там все без проблем работало.
Прикрепил скрин
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911901
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,
Ручками под этой учеткой(спец. учетка) тоже все проходит.
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911908
Фотография PsyMisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

А зачем стоит галка "Do not store password" - в чем неинтерактивность и автоматизируемость?
Проверьте SPN/Kerberos Delegation, как я описал выше.
Большего там ничего особого нет

Ну и конкретно по "приходиться светить пароль"
Его, ессно, не нужно писать в открытом виде в файле

Есть такой способ:
1) открыть powershell_ise или командную строку из-под имени того сервисного аккаунта, из под которого будет впоследствии выполняться виндовый джоб
2) Сохранить закриптованный пароль способом ниже
Код: sql
1.
2.
3.
4.
$TextPassword = 'TYPE_YOUR_PASSWORD_HERE'
$Secure = ConvertTo-SecureString $TextPassword -force -AsPlainText
$Bytes = ConvertFrom-SecureString $Secure
$Bytes | out-file C:\Temp\EncryptedPassword.config



3) В том скрипте, который будет запускаться от джоба и из-под аккаунта выше - выдернуть закриптованный пароль:
Код: sql
1.
2.
$EncryptedPassword = Get-Content C:\Temp\EncryptedPassword.config | ConvertTo-SecureString
$Credential = new-object System.Management.Automation.PSCredential($AdminUPN, $EncryptedPassword)



Профит этого способа в том, что получить пароль из файла можно только в том аккаунте, из-под которого он был сохранен на 2м шаге. Даже используя админский аккаунт, отличный от RunAs на 2м шаге - на 3м его получить не удастся

Полученный объект-креденшл в моем случае использовался для формирования коннекшн-стринга и доступа к SharePoint Online 365, но ничто не мешает использовать его и для mssql. Тот же самый Credential в итоге, который можно привязаться и к System.Data.SqlClient.SqlCredential
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911919
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyMisha,
SPN/Kerberos админы посмотрели, сказали галочка стоит.

По шеллу попробую думаю.

Вообще все очень и очень странно......

Отпишусь как разберусь))) Огромное спасибо за помощь!
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911936
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,

Иван, Вы похоже попали в точку. После того как убрал галочку не сохранять пароль, джоб стал работать.

Правда пока криво, но думаю это уже не беда

Дает ошибку, на последнем инстансе.
Invoke-Sqlcmd : Arithmetic overflow error converting numeric to data type numeric.
At C:\SizeDB\DBSizeCheck.ps1:14 char:1
+ Invoke-Sqlcmd -ServerInstance HOST3 $QueryFmt | Export-CSV $expor ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Invoke-Sqlcmd], SqlPowerShellSqlExecutionException
+ FullyQualifiedErrorId : SqlError,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

А вообще из пока 3, будет больше
Invoke-Sqlcmd -ServerInstance HOST1 $QueryFmt | Export-CSV $exportfile -Encoding UTF8
Invoke-Sqlcmd -ServerInstance HOST2 $QueryFmt | Export-CSV $exportfile -Encoding UTF8 -Append
Invoke-Sqlcmd -ServerInstance HOST3 $QueryFmt | Export-CSV $exportfile -Encoding UTF8 -Append
...
Рейтинг: 0 / 0
Ошибка анонимной аутентификации с помощью Windows Task Schelduler
    #39911962
Фотография Den_KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den_KP,
Вообщем это проблема на самом инстансе, мой селект не может с некоторых баз взять данные, уже точечная ошибка. Всем спасибо! Все робит!
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка анонимной аутентификации с помощью Windows Task Schelduler
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]