sql - 如何判断 ALTER PROCEDURE 是否有效?
问题描述
我对 SQL 和 SQL Server 很陌生。我正在尝试从通过 C# 代码调用ALTER PROCEDURE
的文件中运行查询。.sql
在我继续确保我的查询完成它应该做的之前,我想验证我的ALTER PROCEDURE
查询实际上改变了过程,但我不知道如何验证。
例如,在 SQL Server 中,我可以看到我试图编辑的存储过程在哪里:
- database-name
- Programmability/
- Stored Procedures/
- dbo.MyStoredProcedure
如果我的ALTER TABLE
查询正常工作,我可以在这里看到我的程序代码,还是可以在其他地方查看?还是我想错了?
解决方案
通常,我们依靠错误和异常消息来告诉我们什么时候这样的事情没有奏效。但是,我认为过程 Alter-ed 可能不是预期的过程(当然,这意味着名称/路径/调用构造中的错误)。
在这种情况下,您可以从表中获取任何 SQL 模块(过程、视图、触发器等,任何基于脚本的内容)的当前文本sys.sql_modules
:
SELECT definition FROM sys.sql_modules
WHERE object_id=OBJECT_ID('dbo.UserSamples_Insert')
您应该注意,通常当这样的事情发生而没有错误消息时,这是因为:
- 您在错误的数据库中执行(例如当您打算在 DEV 中使用 PROD 时,反之亦然),或者
- 您没有使用正确的模式(因为您可以制作和使用 以外的模式
'dbo'
)。
等等,你说ALTER PROCEDURE
两次,然后你说第三次ALTER TABLE
。它是哪一个?我问是因为与几乎所有其他 SQL 对象不同,表不是基于脚本的,并且在任何 Sql 脚本存储库(如 sys.sql_modules)中都找不到它们的定义。我实际上使用了 SMO(来自客户端)或 @SeanLange 几年前为此编写的工具(来自服务器本身)。
推荐阅读
- javascript - iframe 更改选择选项文本
- python - 如何从文件中删除重复的行?
- node.js - 使用 node.js express 反应应用程序中的代理服务器问题
- c# - ASP.NET Core 5 MVC 使用带有枚举的视图模型
- go - sync.Waitgroup 不被尊重
- c# - 如何使用 xaml 和 c# 从 Xamarin Android 中的方法中提取(打印)JSON 数据?
- regex - 用于路径匹配的 GCP 审核日志正则表达式
- uwp - 当 UWP 应用程序正在使用文件并且无法删除时,DeleteAsync 是否会抛出异常
- haskell - 为什么函数会这样?
- sql - 为什么去相关查询不产生预期结果?