powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка: Could not find a login matching the name provided.
16 сообщений из 16, страница 1 из 1
Ошибка: Could not find a login matching the name provided.
    #40128085
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем.
Преамбула
Было два сервера SQL 2016, данные с одного сервера передавались с помощью Linked Server, используя sql login
Все прекрасно работало.

Решено было обновить до 2019, "обновление" прошло путем инсталяции новых серверов и затем переименованием.
Также был настроены линкед сервера, данные с одного сервера получаются и отправляются.

НО!
При попытке вызвать удаленную хранимую процедуру вот с таким параметром

Код: sql
1.
2.
exec [Server2].[Database1].dbo.MyProc
 @server = @@servername



На вызывающем сервере Server1 получаю ошибку

Код: sql
1.
2.
3.
4.
Сообщение 596, уровень 21, состояние 1, строка 0
Cannot continue the execution because the session is in the kill state.
Сообщение 0, уровень 20, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.



В журнале ошибок на Server2 следующее
Код: sql
1.
2.
3.
4.
5.
6.
7.
Дата		20.01.2022 14:09:58
Журнал		SQL Server (Текущий - 20.01.2022 13:17:00)

Источник		Logon

Сообщение
Login failed for user 'DomainName\Server2$'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]



Меняешь на
Код: sql
1.
2.
3.
4.
5.
6.
Declare
@server  varchar(128)
set @server = @@servername

exec [Server2].[Database1].dbo.MyProc
 @server = @server



Все работает прекрасно.
Кто-нибудь сталкивался с такой проблемой, может подскажите, как ее решить, помимо изменения кода?
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128087
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, собственно
авторLogin failed for user 'DomainName\Server2$'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128089
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Да, да.
Так и есть.
Попытка добавить этот "логин" к успеху не приводит.
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128092
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

И кстати, не смущает, что соединение пытается установится из под локальной ВИНДОУЗ учетки, когда я соединяюсь с сервером под sql логином
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128096
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белов Владимир
Ролг Хупин,

И кстати, не смущает, что соединение пытается установится из под локальной ВИНДОУЗ учетки , когда я соединяюсь с сервером под sql логином


Где это видно? Подробностей нет
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128115
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белов Владимир
Ролг Хупин,

И кстати, не смущает, что соединение пытается установится из под локальной ВИНДОУЗ учетки, когда я соединяюсь с сервером под sql логином


покажите результат скрипта

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SELECT 
	ORIGINAL_LOGIN() [current login]
	,CAST(s.server_id AS INT) AS [ID]
	,s.is_linked
	,s.name AS [Linked Server]
	,s.data_source
	,s.modify_date AS [Server Modified]
	,CASE 
		WHEN ll.uses_self_credential = 1
			THEN '[Current security context]'
		ELSE ll.remote_name
		END AS [Login Used]
	,ll.modify_date AS [Login Modified]
	,ISNULL(s.CATALOG, N'') AS [Catalog]
	,ISNULL(s.location, N'') AS [Location]
	,s.product AS [ProductName]
	,s.provider AS [ProviderName]
	,CAST(s.is_collation_compatible AS BIT) AS [CollationCompatible]
	,CAST(s.is_data_access_enabled AS BIT) AS [DataAccess]
	,CAST(s.is_remote_login_enabled AS BIT) AS [Rpc]
	,CAST(s.is_rpc_out_enabled AS BIT) AS [RpcOut]
	,ISNULL(s.collation_name, N'') AS [CollationName]
	,s.connect_timeout AS [ConnectTimeout]
	,s.lazy_schema_validation AS [LazySchemaValidation]
	,s.query_timeout AS [QueryTimeout]
	,s.uses_remote_collation AS [UseRemoteCollation]
FROM sys.servers s
LEFT JOIN sys.linked_logins ll ON ll.server_id = s.server_id

...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128162
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

Это я выполнил на Server2
Server2 = VIR-SQL-MONITOR
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128172
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белов Владимир,

это надо выполнить на сервере 1
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128191
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128198
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белов Владимир,

а что выдаст эта команда, выполненная на server1 ?

Код: sql
1.
exec ('select @@servername [srv], original_login() [linked_account]') at [VIR-SQL-MONITOR]
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128204
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128223
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белов Владимир,

ну если "sql linked login" с одной картинки идентичен "sql linked acc" с другой картинки, то попробуйте создать простую тестовую процедуру на сервере 2, которая будет возвращать переданное ей значение. И выполните её с сервера 1.
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128258
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,

Да, именно так и сделал. Все параметры передает отлично, но стоит только указать, что
Код: sql
1.
@param = @@servername



все, валится с ошибкой.
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128352
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белов Владимир
komrad,

Да, именно так и сделал. Все параметры передает отлично, но стоит только указать, что
Код: sql
1.
@param = @@servername



все, валится с ошибкой.


@@servername возвращает Nvarchar
входной параметр @param имеет такой же тип?
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128392
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komrad,
Да, nvarchar(128)
...
Рейтинг: 0 / 0
Ошибка: Could not find a login matching the name provided.
    #40128403
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Белов Владимир

Меняешь на
Код: sql
1.
2.
3.
4.
5.
6.
Declare
@server  varchar(128)
set @server = @@servername

exec [Server2].[Database1].dbo.MyProc
 @server = @server



Все работает прекрасно.


@server varchar(128)
здесь опечатка?

сработает ли процедура при вызове с явным значением (не переменная)?

Код: sql
1.
exec Server2.[Database1].dbo.MyProc  @server = N'value'



как отработает этот скрипт?

тестовая проца
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
/* выполнить на Server2 */
use tempdb 
go

create proc dbo.ret_val (@in nvarchar(128)) 
as 
  select @in [parameter]
go

grant exec on dbo.ret_val to public
go

/* выполнить на Server 1*/
exec Server2.tempdb.dbo.ret_val @@servername
exec Server2.tempdb.dbo.ret_val N'test value'

/* удаление процедуры */
/* выполнить на Server2 */
use tempdb 
go
drop proc dbo.ret_val
go

...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ошибка: Could not find a login matching the name provided.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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