SQL Strange Timeout Issue - PullRequest
       10

SQL Strange Timeout Issue

2 голосов
/ 15 мая 2010

Хорошо, поэтому я пытаюсь создать процедуру, которая вызывает расширенную процедуру. Я получаю следующую ошибку:

Msg 121, Level 20, State 0, Line 0
A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - The semaphore timeout period has expired.)

Даже с самым простым тестом я получаю эту ошибку:

CREATE PROCEDURE Test
AS
BEGIN

EXEC xp_cmdshell 'dir *.exe'

END

Однако, если я просто запускаю xp_cmdshell 'dir *.exe', это сработает.

Это выполняется на кластерном сервере SQL 2005. Любая помощь приветствуется.

1 Ответ

1 голос
/ 22 мая 2011

Вы получаете ошибку, когда СОЗДАЕТЕ процедуру или ВЫ ИСПОЛНИТЕ ее?

Если вы получите его при выполнении, то могут возникнуть проблемы с разрешениями. Поскольку в более поздних версиях sql-сервера вызов xp_cmdshell плотно заблокирован и по умолчанию не включен в конфигурации наземной области, я мог видеть потенциал для этого.

Как вы звоните в SP? Если вы используете динамический SQL, знайте, что он выполняется с привилегиями вызывающего, а не создателя SP.

Вам нужно добавить префикс SP к мастеру, как в master.dbo.xp_cmdshell?

Вы пробовали EXECUTE AS либо при создании SP, либо при выполнении SP?

Кроме того, по моему опыту, ошибки транспортного уровня иногда связаны не с проблемой сервера, а с проблемой, когда клиент кэширует свой объект соединения после того, как сервер его отбросил (что делает объект соединения недействительным). Учитывая, что вы, вероятно, запускаете это в течение короткого времени после первоначального подключения, это не похоже, что это является точной проблемой, но может возникнуть проблема с прокси / брандмауэром / сетевым фильтром, которая отбрасывает пакеты из-за обнаружение определенных ключевых слов в пакетах? Я знаю, что это длинный выстрел, но я должен был спросить ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...