【问题标题】:T-SQL - Store the stored procedure that inserted into / updated a record in a tableT-SQL - 存储插入/更新表中记录的存储过程
【发布时间】:2018-02-03 18:27:27
【问题描述】:

晚上,

我在一个组织中开始工作,其中涉及大型包的大型 SSIS 解决方案将数据推送到整个地方,包括服务器之间。开发它的人已经离开了,而我的任务是弄清楚并调试它......

我已经制作了一些相当广泛的 DFD 来绘制存储过程、表、视图等之间的关系,但是在某些表中我发现无法确定插入/更新的进程。

我想做的是在每次写入表时使用默认值在我关心的表上创建一些字段。

  • 字段1,
  • 字段2,
  • 等等……
  • '添加了日期时间记录'
  • '第一次插入记录的进程',
  • '日期时间记录上次更新'
  • '上次更新记录的进程'

流程值的格式为“Server.Database.schema.UspName”

我查看了 sysprocesses 并在线搜索,但找不到解决方案。有什么想法吗?

{使用 SSMS 2014}

提前致谢,

【问题讨论】:

  • 当心 - 添加或修改列可能会导致其他进程失败。如果您看到“select *”或“insert table select”的用法(即,未在插入语句中指定列列表),就会发生不好的事情。为特定表名过滤的服务器端跟踪是一种替代方法。
  • 谢谢 SMor,我正在使用 DEV 环境来弄清楚这个过程。一旦我设法理解它在做什么,我们将完全重写它以简化过程,我希望添加这些列以用于将来的故障排除。

标签: sql-server tsql ssis ssms default-value


【解决方案1】:

看看下面的链接。它描述了如何通过触发器获取有关调用实例的信息。 How to get the stored procedure name from a trigger when an update operation was performed?

【讨论】:

  • 一位同事建议使用触发器,但我们担心性能下降。我认为这适用于一次性错误检查,但我希望能够向每个表添加代码并将其保留在那里。
  • 我确实设法让以下内容适用于首先插入记录但在更新记录时不起作用的usp:(object_name(@@procid))
猜你喜欢
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2015-10-03
相关资源
最近更新 更多