为什么由红色显示的SSMS生成的脚本与存储在系统表中的脚本不同。 请注意查询,查询结果和对象资源管理器中的存储过程名称。
即。 所有这些方法都给了我相同的脚本
$('.bls').each(function() {
if($(this).val() > 0){
$(this).parent('.test1').hide().next('.test2').show();
}
});
但是,当从SSMS生成时,右键单击 - > “创建”或“修改”脚本提供了不同的脚本。
如何才能生成不同的脚本。
答案 0 :(得分:1)
答案可能令人困惑。
已重命名存储过程getBudgets4programManager2
(很可能使用sp_rename
https://msdn.microsoft.com/en-us/library/ms188351.aspx),因此原始定义与新名称不匹配。 BTW。请注意,如果发出CREATE
语句,存储在元数据中的定义将始终将DDL命令更改为ALTER PROCEDURE
。
同时,SSMS脚本功能不会简单地从元数据中获取定义,因为它具有存储过程的对象表示,它将规范化模式名称&对象名称,它也可以相应地规范化DDL命令(CREATE
/ ALTER
)。请注意,架构显示它已标准化(即[dbo]
),并且当前名称也已标准化。
为什么在重命名对象的同时不重命名元数据定义。答案并非100%明确,但此类更改会影响依赖于定义的SQL Server引擎中的任何功能,包括使用WITH ENCRYPTION
上的ALTER/CREATE PROCEDURE
选项以及数字签名的验证。
据我所知,两个版本的脚本中的其他元素应保持不变(注释,空格等)。
我希望这些信息有所帮助。