【问题标题】:How to copy records from sys.event_log in Azure SQL Database to a user-defined table in another database如何将 Azure SQL 数据库中的 sys.event_log 中的记录复制到另一个数据库中的用户定义表中
【发布时间】:2020-07-29 13:41:50
【问题描述】:

在我们的工作场所,我无权访问主数据库。 我想跟踪“失败的连接”和“死锁”所以我决定使用sys.event_log。 如何将此视图的内容复制到我的数据库中,然后从那里监视数据库状态? 仅供参考:我想我会以某种方式获取数据副本。

如果有其他解决方案,未经高手许可,请提供给我。

问候,

【问题讨论】:

    标签: azure-sql-database deadlock event-log


    【解决方案1】:

    我们必须需要permission 才能查询主数据库中的sys.event_log 表:

    有权访问主数据库的用户对该视图具有只读访问权限。

    sys.event_log中的数据是动态增长的。如果我们复制数据,我们仍然需要先访问它。也许您可以要求服务器管理员帮助您做到这一点。例如创建额外的源/表。创建一个新表并从用户数据库中的sys.event_log 复制数据。然后您可以访问sys.event_log 的副本表。限制是数据不会及时更新。

    恐怕没有master的权限我们不能访问它。

    【讨论】:

    • 谢谢,Leon,正如你所提到的,如果我可以访问,那么复制另一个 tebale 可能会有所帮助。但是这个视图是动态创建的,那么怎么调用这个程序呢?触发器是什么?是否可以从 Azure 数据工厂访问主节点?例如,在 master 中创建一个从该视图读取并存储在用户表中的过程。然后从 ADF 调用此过程。这是我的想法。
    • 使用数据工厂,您还应该确保您的 AD 帐户具有访问主数据库的权限。最好创建创建过程以获取数据,然后在 Source 中调用存储过程并输出到 Sink 用户数据库表(我建议在数据流中使用 upsert)。计划根据您的请求触发管道运行。前提是您可能需要拥有更高级别权限的人来帮助您构建管道。
    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2012-05-15
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    相关资源
    最近更新 更多