SQL Server Management Studio错误:UserDefinedFunction的脚本失败

时间:2012-01-04 17:17:01

标签: sql sql-server-2008-r2 ssms

我正在使用SSMS处理本地和远程SQL Server实例。我创建了一个小函数,如:

create function ufnTestFunc ()
returns int
begin
    return 1
end

当我尝试'修改'它,或选择'脚本功能为 - >改变',我得到一个错误:

  

UserDefinedFunction'dbo.ufnTestFunc'的脚本失败。   (Microsoft.SqlServer.Smo)

     

- UserDefinedFunction'ufnTestFunc'的TextHeader中的语法错误。   (Microsoft.SqlServer.Smo)

这也发生在已有的功能上。可能是什么原因?


备注:

  • 所有功能都按预期工作
  • 我可以将函数编写为'create'而没有任何问题。
  • 与评论无关,因为测试功能中没有评论
  • 远程服务器上的不同数据库也是如此

本地服务器:
Microsoft SQL Server Express Edition(64位) - 10.50.2500.0

远程服务器:
Microsoft SQL Server网络版(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 个答案:

答案 0 :(得分:2)

运行sp_helptext N'ufnTestFunc'

看起来奇数的函数上方的“注释”部分是否有任何内容?

嵌入式评论/* */有时可能会导致错误。

示例:

/* 
    This function does something. 
    /* NOTE: not any useful, though */
    More stuff...
*/
alter function ufnTestFunc ()
returns int
begin
    return 1
end

答案 1 :(得分:2)

好像之前提到的人,但有一点点差异。

问题是AS关键字。虽然函数内容之前的AS关键字是可选的,但SSMS无法处理函数。他们工作,但制造麻烦。这是一个错误,在BOL的任何地方都没有提到。

我通常使用AS关键字,但这次数据库来自之前的编码人员,他没有使用它。在我的测试功能中,我也没有使用它来使功能尽可能小。

答案 2 :(得分:0)

- 添加我收到此错误,既不能编写脚本也不能修改sproc。

问题是内联的块注释部分,在另一个块注释中。

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

删除了内部评论栏,没问题。