SSMS 在更新后停止加载我的存储过程
SSMS stopped loading my stored procedures after update
今天我安装了 Microsoft SQL Server Management Studio (SSMS) [2016-09-20, 16.4] 版本 13.0.15800.18,现在它拒绝编辑我的存储过程。我什至在我的另一台计算机上尝试了一个稍旧的版本以确保它们在那里打开得很好。我收到错误:
Script failed for StoredProcedure 'xyz'. (Microsoft.SqlServer.Smo)
Additional information:
Syntax error in TextHeader of StoredProcedure 'xyz'. (Microsoft.SqlServer.Smo)
一些旧帖子 (1, 2, ) 在线讨论这是由于在“ALTER PROCEDURE”之前(或通常在某个地方的过程中)有嵌套注释引起的。就我而言,none 我的脚本在最近的 SSMS 更新后打开。我在另一台使用旧版本 SSMS 的计算机上查看了我的一个更简单的脚本,整个过程中唯一的评论是一个简单的自动生成的评论,上面写着:
/****** Object: StoredProcedure [dbo].[xyz] Script Date: 9/21/2016 12:55:48 PM ******/
在 2016 年 9 月 20 日更新 SSMS 后,有没有其他人运行遇到这个问题,有没有人找到解决方案?
更新 1: lhsoftware 关于使用 Create To 的提示(下方)有效用于打开程序。我尝试修改一个简单的程序,使其完全没有任何注释,但在尝试 Modify 时我仍然收到“脚本失败”错误!后来我什至用 sp_helptext
检查了这个过程,确实它不包含任何斜杠 (/) 或星号 (*)。
更新 2: Microsoft 已正式撤销更新,并显示以下消息(找到 here):
There is a known issue with the SSMS 16.4 release and we have rolled back the download to SSMS 16.3. We will update the download link when the issue has been resolved.
If you have installed SSMS 16.4 and would like to revert to SSMS 16.3, you must uninstall SSMS 16.4 prior to installing SSMS 16.3.
更新 3: 该错误已在版本 16.4.1 (13.0.15900.1) 中解决。对我来说,Modify 和 Alter To 在安装 16.4.1.
后再次工作
此外,不要从 SSMS 修改 SP,而是尝试将其编写为 Alter To
新查询 Window.
脚本
我也遇到了这种情况 -- 这似乎是最新更新的常见问题。
有人记录了 MS 的错误,其中有一些 activity 您可以在此处关注:https://connect.microsoft.com/SQLServer/Feedback/Details/3103831
当前的解决方法是更新工具 -> 选项 -> SQL 服务器对象资源管理器 -> 脚本 -> 将用户定义的数据类型转换为基本类型 = True,但这可能会产生一些意想不到的后果。
我目前正在使用 SSMS 2014。希望他们能尽快解决问题(虽然我不是在祈祷)。
"Script Stored Procedure As > Create To" 会起作用。您可以手动将其更改为Alter。 jhipp 的建议也有效。
注:
"Script Stored Procedure As > Alter To" 将 return 与 "Modify"
相同的错误
这是一个错误,我希望尽快修复。我使用的解决方法是:使用 CREATE 脚本选项并自行将 CREATE 更改为 ALTER。这里建议:https://connect.microsoft.com/SQLServer/Feedback/Details/3103831.
Microsoft SQL 团队发布了解决此问题的更新(版本 13.0.15900.1):(Download SQL Server Management Studio (16.4.1))
请注意版本 13.0.15800.18 的解决方法:工具 -> 选项 -> SQL 服务器对象资源管理器 -> 脚本 -> 将用户定义的数据类型转换为基本类型 = True
正在将“EXECUTE AS CALLER”添加到存储过程和标量函数
一旦安装版本:13.0.15800.18,即使您卸载并安装旧版本 (Previous SQL Server Management Studio Releases),问题仍然存在
Microsoft 已意识到该问题并发布了高质量版本 public 版本包含修复程序
https://connect.microsoft.com/SQLServer/feedback/details/3103831
有几种方法可以取回存储过程的文本。我发现唯一一个没有字符数限制的 returned 是系统注释 table.
您可以使用此命令恢复完整的存储过程。它将 return 来自存储过程的 4000 个字符元素的数组。每个数组元素将包含来自存储过程的几行 - 在达到 4000 个字符限制的任何地方分解。将所有行复制到 SQL 编辑器,然后在编辑器中浏览这些行以重新加入在每个 4000 个字符集末尾拆分的行。
select 文字
来自
syscomments c
inner join sys.procedures p on p.object_id = c.id
其中
p.name = 'stored procedure name'
当我搜索错误时,这是我在代码开头的注释中找到的:
/*
使用 GBDB
声明@intErrorCode INT,
@vchErrorMessage VARCHAR(25),
@RunReport INT = 1
IF (@RunReport = 1)
开始
IF (OBJECT_ID('tempdb.dbo.#tblspLocal_CalculateNeedsList') IS NOT NULL)
BEGIN
DROP TABLE #tblspLocal_CalculateNeedsList
END
CREATE TABLE #tblspLocal_CalculateNeedsList (
Id INT IDENTITY,
ReportSection INT,
/*
Section 1 - Grinds Needed
*/
本例是嵌套/* */注释标签造成的
我将那部分评论替换为:
--Section 1 - Grinds Needed
然后错误消失了。
今天我安装了 Microsoft SQL Server Management Studio (SSMS) [2016-09-20, 16.4] 版本 13.0.15800.18,现在它拒绝编辑我的存储过程。我什至在我的另一台计算机上尝试了一个稍旧的版本以确保它们在那里打开得很好。我收到错误:
Script failed for StoredProcedure 'xyz'. (Microsoft.SqlServer.Smo)
Additional information:
Syntax error in TextHeader of StoredProcedure 'xyz'. (Microsoft.SqlServer.Smo)
一些旧帖子 (1, 2,
/****** Object: StoredProcedure [dbo].[xyz] Script Date: 9/21/2016 12:55:48 PM ******/
在 2016 年 9 月 20 日更新 SSMS 后,有没有其他人运行遇到这个问题,有没有人找到解决方案?
更新 1: lhsoftware 关于使用 Create To 的提示(下方)有效用于打开程序。我尝试修改一个简单的程序,使其完全没有任何注释,但在尝试 Modify 时我仍然收到“脚本失败”错误!后来我什至用 sp_helptext
检查了这个过程,确实它不包含任何斜杠 (/) 或星号 (*)。
更新 2: Microsoft 已正式撤销更新,并显示以下消息(找到 here):
There is a known issue with the SSMS 16.4 release and we have rolled back the download to SSMS 16.3. We will update the download link when the issue has been resolved.
If you have installed SSMS 16.4 and would like to revert to SSMS 16.3, you must uninstall SSMS 16.4 prior to installing SSMS 16.3.
更新 3: 该错误已在版本 16.4.1 (13.0.15900.1) 中解决。对我来说,Modify 和 Alter To 在安装 16.4.1.
后再次工作此外,不要从 SSMS 修改 SP,而是尝试将其编写为 Alter To
新查询 Window.
我也遇到了这种情况 -- 这似乎是最新更新的常见问题。
有人记录了 MS 的错误,其中有一些 activity 您可以在此处关注:https://connect.microsoft.com/SQLServer/Feedback/Details/3103831
当前的解决方法是更新工具 -> 选项 -> SQL 服务器对象资源管理器 -> 脚本 -> 将用户定义的数据类型转换为基本类型 = True,但这可能会产生一些意想不到的后果。
我目前正在使用 SSMS 2014。希望他们能尽快解决问题(虽然我不是在祈祷)。
"Script Stored Procedure As > Create To" 会起作用。您可以手动将其更改为Alter。 jhipp 的建议也有效。
注:
"Script Stored Procedure As > Alter To" 将 return 与 "Modify"
相同的错误这是一个错误,我希望尽快修复。我使用的解决方法是:使用 CREATE 脚本选项并自行将 CREATE 更改为 ALTER。这里建议:https://connect.microsoft.com/SQLServer/Feedback/Details/3103831.
Microsoft SQL 团队发布了解决此问题的更新(版本 13.0.15900.1):(Download SQL Server Management Studio (16.4.1))
请注意版本 13.0.15800.18 的解决方法:工具 -> 选项 -> SQL 服务器对象资源管理器 -> 脚本 -> 将用户定义的数据类型转换为基本类型 = True
正在将“EXECUTE AS CALLER”添加到存储过程和标量函数
一旦安装版本:13.0.15800.18,即使您卸载并安装旧版本 (Previous SQL Server Management Studio Releases),问题仍然存在
Microsoft 已意识到该问题并发布了高质量版本 public 版本包含修复程序
https://connect.microsoft.com/SQLServer/feedback/details/3103831
有几种方法可以取回存储过程的文本。我发现唯一一个没有字符数限制的 returned 是系统注释 table.
您可以使用此命令恢复完整的存储过程。它将 return 来自存储过程的 4000 个字符元素的数组。每个数组元素将包含来自存储过程的几行 - 在达到 4000 个字符限制的任何地方分解。将所有行复制到 SQL 编辑器,然后在编辑器中浏览这些行以重新加入在每个 4000 个字符集末尾拆分的行。
select 文字
来自
syscomments c
inner join sys.procedures p on p.object_id = c.id
其中
p.name = 'stored procedure name'
当我搜索错误时,这是我在代码开头的注释中找到的:
/* 使用 GBDB
声明@intErrorCode INT, @vchErrorMessage VARCHAR(25), @RunReport INT = 1
IF (@RunReport = 1) 开始
IF (OBJECT_ID('tempdb.dbo.#tblspLocal_CalculateNeedsList') IS NOT NULL)
BEGIN
DROP TABLE #tblspLocal_CalculateNeedsList
END
CREATE TABLE #tblspLocal_CalculateNeedsList (
Id INT IDENTITY,
ReportSection INT,
/*
Section 1 - Grinds Needed
*/
本例是嵌套/* */注释标签造成的
我将那部分评论替换为:
--Section 1 - Grinds Needed
然后错误消失了。