我正在使用SSMS处理本地和远程SQL Server实例。我创建了一个小函数,如:
create function ufnTestFunc ()
returns int
begin
return 1
end
当我尝试'修改'它,或选择'脚本功能为 - >改变',我得到一个错误:
UserDefinedFunction'dbo.ufnTestFunc'的脚本失败。 (Microsoft.SqlServer.Smo)
- UserDefinedFunction'ufnTestFunc'的TextHeader中的语法错误。 (Microsoft.SqlServer.Smo)
这也发生在已有的功能上。可能是什么原因?
备注:
本地服务器:
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
答案 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
*/
删除了内部评论栏,没问题。