首页 > 解决方案 > 如何判断 ALTER PROCEDURE 是否有效?

问题描述

我对 SQL 和 SQL Server 很陌生。我正在尝试从通过 C# 代码调用ALTER PROCEDURE的文件中运行查询。.sql在我继续确保我的查询完成它应该做的之前,我想验证我的ALTER PROCEDURE查询实际上改变了过程,但我不知道如何验证。

例如,在 SQL Server 中,我可以看到我试图编辑的存储过程在哪里:

 - database-name
     - Programmability/
         - Stored Procedures/
          - dbo.MyStoredProcedure

如果我的ALTER TABLE查询正常工作,我可以在这里看到我的程序代码,还是可以在其他地方查看?还是我想错了?


标签: sqlsql-servertsql

解决方案


通常,我们依靠错误和异常消息来告诉我们什么时候这样的事情没有奏效。但是,我认为过程 Alter-ed 可能不是预期的过程(当然,这意味着名称/路径/调用构造中的错误)。

在这种情况下,您可以从表中获取任何 SQL 模块(过程、视图、触发器等,任何基于脚本的内容)的当前文本sys.sql_modules

SELECT definition FROM sys.sql_modules 
WHERE object_id=OBJECT_ID('dbo.UserSamples_Insert')

您应该注意,通常当这样的事情发生而没有错误消息时,这是因为:

  1. 您在错误的数据库中执行(例如当您打算在 DEV 中使用 PROD 时,反之亦然),或者
  2. 您没有使用正确的模式(因为您可以制作和使用 以外的模式'dbo')。

等等,你说ALTER PROCEDURE两次,然后你说第三次ALTER TABLE。它是哪一个?我问是因为与几乎所有其他 SQL 对象不同,表不是基于脚本的,并且在任何 Sql 脚本存储库(如 sys.sql_modules)中都找不到它们的定义。我实际上使用了 SMO(来自客户端)或 @SeanLange 几年前为此编写的工具(来自服务器本身)。


推荐阅读