Ошибка SQL Server Management Studio: ошибка сценария для функции UserDefinedFunction - PullRequest
3 голосов
/ 04 января 2012

Я работаю на локальном и удаленном экземпляре SQL Server с SSMS.Я создаю крошечную функцию, например:

create function ufnTestFunc ()
returns int
begin
    return 1
end

Когда я пытаюсь «изменить» ее или выбрать «функция сценария как -> изменить», я получаю сообщение об ошибке:

Сбой сценария для UserDefinedFunction 'dbo.ufnTestFunc'.(Microsoft.SqlServer.Smo)

- Синтаксическая ошибка в TextHeader функции UserDefinedFunction 'ufnTestFunc'.(Microsoft.SqlServer.Smo)

Это также происходит с уже существующими функциями.В чем может быть причина?


Примечания:

  • Все функции работают по назначению
  • Я могу написать функцию как'create' без проблем.
  • Это не связано с комментариями, так как в тестовой функции нет комментариев
  • То же самое происходит с различными БД на удаленном сервере

Локальный сервер:
Microsoft SQL Server Express Edition (64-разрядная версия) - 10.50.2500.0

Удаленный сервер:
Microsoft SQL Server Web Edition (64-разрядная версия) - 10.50.1600.1

SSMS:

Microsoft SQL Server Management Studio    10.50.2500.0
Microsoft Data Access Components (MDAC)   6.1.7601.17514
Microsoft MSXML                           3.0 6.0 
Microsoft .NET Framework                  2.0.50727.5448

Ответы [ 3 ]

2 голосов
/ 05 января 2012

Хорошо, как кто-то упоминал ранее, но с небольшой разницей.

Проблема в ключевом слове AS.Хотя ключевое слово AS перед содержимым функции является необязательным, SSMS не может обрабатывать функции без него.Они работают, но создают проблемы.Это ошибка и не упоминается нигде в BOL.

Я обычно использую ключевое слово AS, но на этот раз БД принадлежит предыдущему кодеру, который его не использовал.В моей тестовой функции я также не использовал ее, чтобы сделать функцию как можно меньше.

2 голосов
/ 04 января 2012

Выполнить sp_helptext N'ufnTestFunc'

Есть ли что-нибудь в разделе "комментарии" над функцией, которое выглядит как нечетное ?

Встроенные комментарии /* */ может иногда вызывать эту ошибку.

Пример:

/* 
    This function does something. 
    /* NOTE: not any useful, though */
    More stuff...
*/
alter function ufnTestFunc ()
returns int
begin
    return 1
end
0 голосов
/ 09 октября 2013

- добавление, что я получил эту ошибку и не смог ни написать, ни изменить sproc.

Проблема заключалась в том, что внутри комментария блока был встроенный раздел внутри другого комментария блока.

/*  
Example call:  
 Exec [usp_mySproc] @Param = '172777'  /* blah, blah */
 Exec [usp_mySproc] @Param = '172777', @Debug = 1   WITH RECOMPILE   
*/ 

Удален внутренний блок комментариев и нет проблем.

...