MSSQLSERVER_18482
Область применения: SQL Server
Сведения
Атрибут | Значение |
---|---|
Название продукта | SQL Server |
ИД события | 18482 |
Источник событий | MSSQLSERVER |
Компонент | SQLEngine |
Символическое имя | REMLOGIN_INVALID_SITE |
Текст сообщения | Невозможно подключиться к серверу "%.ls", так как сервер "%.ls" не определен как удаленный. Убедитесь, что имя сервера указано правильно. %.*ls |
Описание
Эта ошибка возникает при попытке выполнить удаленный вызов процедур (RPC) с одного сервера на другой (например, путем выполнения хранимой процедуры на удаленном компьютере, используя такую инструкцию, как EXEC SERV_REMOTE.pubs..byroyalty
). Пользователю выводится сообщение об ошибке, аналогичное приведенному ниже
Ошибка 18482. Не удалось подключиться к серверу <SERV_REMOTE, так как <SERV_REMOTE>> не определен как удаленный сервер. Убедитесь, что имя сервера указано правильно.
Причина
Эта ошибка возникает, когда SQL Server не может выполнить удаленный вызов процедур. Это может быть вызвано неправильно настроенным локальным сервером. Чтобы выполнить удаленный вызов процедур, SQL Server сначала определяет локальный сервер, выполняя поиск имени сервера с переменной srvid = 0 в таблице sysservers. Если запись с переменной srvid = 0 не найдена в таблице sysservers или если имя сервера с переменной srvid = 0 относится к имени сервера, которое отличается от имени локального компьютера Windows, появится сообщение об ошибке.
Действие пользователя
Чтобы определить, правильно ли настроен локальный сервер, просмотрите столбец srvstatus
в master..sysservers. Для локального сервера это значение должно быть равно 0.
Предположим, например, что локальный сервер называется SERV_LOCAL, удаленный сервер — SERV_REMOTE, а таблица sysservers содержит следующие сведения:
srvid | srvstatus | srvname | srvname |
---|---|---|---|
1 | 2 | SERV_LOCAL | SERV_LOCAL |
2 | 1 | SERV_REMOTE | SERV_REMOTE |
В предыдущих выходных данных SERV_LOCAL является локальным сервером, однако для srvid задано значение 1, когда оно должно быть равно 0. Чтобы исправить это, выполните следующие действия:
- Выполните
sp_dropserver
local_server_name, droplogins (в этом примере следует выполнитьsp_dropserver SERV_LOCAL, droplogins
). - Выполните
sp_addserver
local_server_name, LOCAL (в этом примере следует выполнитьsp_addserver SERV_LOCAL, LOCAL
). - Остановите и перезапустите SQL Server.
После выполнения этих действий таблица sysservers должна выглядеть следующим образом:
srvid | srvstatus | srvname | srvname |
---|---|---|---|
0 | 0 | SERV_LOCAL | SERV_LOCAL |
2 | 1 | SERV_REMOTE | SERV_REMOTE |
Примечание.
Для локального сервера значение идентификатора сервера (srvid) должно быть равно 0.
Возможны случаи, когда записи в таблице sysservers выглядят правильно, но при выполнении select @@servername
возвращается значение NULL. В таких случаях для устранения проблемы по-прежнему нужно выполнить шаги с 1 по 3, перечисленные выше.
Дополнительные сведения
Это сообщение об ошибке может появиться при установке репликации, поскольку процесс установки выполняет удаленные вызовы процедур между серверами, участвующими в репликации.