首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于用户审核的系统视图触发器的替代方法

用于用户审核的系统视图触发器的替代方法
EN

Database Administration用户
提问于 2017-05-16 06:23:24
回答 2查看 629关注 0票数 5

即使是写标题,我也对我尝试过的想法感到失望(但是,在这个过程中,我学到了一些东西)。

对于在数据库上运行迁移脚本的开发人员,以及在覆盖数据库中已经存在的存储过程(DEV,谢天谢地)过程中,我遇到了问题。

但是,没有办法找出是谁做了这些更改,因为:

  1. 他们不承认
  2. Server不填充principal_id系统视图中的sys.objects列,因为每个人都以dbo (这里有更多的信息)的形式连接。

因此,我尝试在sys.objects上编写一个触发器,但这没有起作用(我不知道为什么我曾经期望它),因为我收到了一个错误:

对象'DEV_DB.sys.objects‘不存在或对此操作无效。

我还尝试为每个开发人员创建一个用户,以便当他们进行自动迁移时,他们将使用我所做的用户,希望该开发人员对sys.objects所做的所有更改都将作为他们登录的用户登录。

但这也不起作用,因为principal_id还没有填充(我所做的是为每个开发人员创建一个新的登录/用户& DB,并给出登录特定服务器角色public__、db_datawriter__、db_datareader__、db_ddladmin)。

关于我还能尝试什么替代方案,有什么建议吗?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-05-16 06:41:44

您始终可以点击默认跟踪来捕获对象的任何更改,包括存储的procs。

给下面的脚本一个旋转,这是很容易找出谁改变了什么和什么时候。它帮助我抓住了不止一个狡猾的开发人员;)

代码语言:javascript
运行
AI代码解释
复制
SELECT  t.DatabaseName, t.ObjectID,t.NTUserName,t.HostName,t.StartTime, te.name
FROM ::fn_trace_gettable('C:\Program Files\Microsoft SQL 
Server\MSSQL13.SQL2016\MSSQL\Log\log.trc', DEFAULT) t  
JOIN sys.trace_events te  on t.EventClass = te.trace_event_id  
ORDER BY t.StartTime DESC;

您需要将路径更改到SQL跟踪文件所在的位置,以找出它的运行位置:

代码语言:javascript
运行
AI代码解释
复制
select path 
from sys.traces
where id = 1

提示之一,从文件名中删除_number以读取所有可用的跟踪文件,例如,如果文件名为log_16.trc,则将其更改为log.trc

票数 5
EN

Database Administration用户

发布于 2017-05-16 09:44:24

如果开发人员有单独的登录,您可以考虑使用DDL触发器。下面是CREATE_PROCEDUREALTER_PROCEDUREDROP_PROCEDURE事件的示例。

代码语言:javascript
运行
AI代码解释
复制
USE YourDatabase;
GO

CREATE TRIGGER trgStoredProcDDL
ON DATABASE
FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE
AS
BEGIN
    --Get relevant info from EVENTDATA()
    DECLARE @Login SYSNAME= EVENTDATA().value('(/EVENT_INSTANCE/LoginName)[1]', 'SYSNAME');
    DECLARE @DBUser SYSNAME = EVENTDATA().value('(/EVENT_INSTANCE/UserName)[1]', 'SYSNAME');
    DECLARE @Schema SYSNAME = EVENTDATA().value('(/EVENT_INSTANCE/SchemaName)[1]', 'SYSNAME');
    DECLARE @Proc SYSNAME = EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]', 'SYSNAME');

    --Optional: error message for end user.
    RAISERROR ('Please stop!', 16, 1);

    --Optional: Rollback transaction that fired the DDL trigger
    ROLLBACK;

    --Optional: log some data to a table.
    BEGIN TRAN
        INSERT INTO guest.LogTable(LogMsg, LogDate, [Login], [User])
        VALUES('Stored Proc was created/altered/dropped: [' + @Schema + '].[' + @Proc+ ']', 
            CURRENT_TIMESTAMP,
            @Login,
            @DBUser);
    COMMIT

    --Optional: send an email/alert.
    DECLARE @Subj NVARCHAR(255) 
    SET @Subj = @@SERVERNAME + ' - Stored Proc created/altered/dropped'
    EXEC msdb..sp_send_dbmail
        @recipients = 'You@YourDomain.com', 
        @subject = @Subj,
        @body = 'Your message...'
END;

这里有一篇关于使用DDL触发器处理事件的博客文章,还有一些进一步的解释:服务器事件处理: DDL事件

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/173707

复制
相关文章
android 两个APK调用
@Override     public boolean onTouchEvent(MotionEvent event) {          ComponentName componetName = new ComponentName(                  //这个是另外一个应用程序的包名                 "com.apk2",                 //这个参数是要启动的Activity                 "com.apk2.MainActivity"); //        Intent intent= new Intent("chroya.foo");         Intent intent= new Intent();         //我们给他添加一个参数表示从apk1传过去的         Bundle bundle = new Bundle();         bundle.putString("arge1", "这是跳转过来的!来自apk1");         intent.putExtras(bundle);         intent.setComponent(componetName);         startActivity(intent);         return super.onTouchEvent(event);     }
用户2192970
2019/02/21
4430
详解如何把.py文件转.apk
Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用它来将Python程序打包为安卓的apk安装文件。以下是在win7 64位环境中的具体配置步骤(安装和配置的过程中会下载很多东西,确保你能够稳定地访问外网--即能访问YouTuBe等网站)
用户6367961
2019/09/29
11.9K0
PhalApi-APK--APK文件解包处理
#PhalApi-APK -- APK文件解包处理 ##前言 应为笔者这边涉及到的项目有需求对APK进行解包的操作,所以贡献此扩展希望大家喜欢 附上: 官网地址:http://www.phalapi.
喵了个咪233
2018/03/02
1.9K0
PhalApi-APK--APK文件解包处理
.apk反编译_apk反编译教程
大家好,又见面了,我是你们的朋友全栈 原文作者:[color=blue][b]lpohvbe[/b][/color] 原文地址:[url]http://blog.csdn.net/lpohvbe/article/details/7981386[/url] 本人接触不久,有错误望请各位神牛不吝赐教,仅仅希望把自己这段时间研究的东西分享一下,如果可以帮助到有需要的童鞋万感荣幸。欢迎评论转载,但请加上转载来源谢谢!请尊重开发者劳动成果!请勿用于非法用途!
全栈程序员站长
2022/09/29
9.6K0
细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4
大部分开发者对apk签名还停留在APK v2,对APK v3和APK v4了解很少,而且网上大部分文章讲解的含糊不清,所以根据官网文档重新整理一份。
BennuCTech
2021/12/10
6.6K0
细说Android apk四代签名:APK v1、APK v2、APK v3、APK v4
APK安装流程详解9——PackageParser解析APK(上)
为了让咱们更好的理解谷歌的安卓团队对PackageParser的定位,我们来看下PackageParser的注释
隔壁老李头
2018/08/30
5.9K0
APK安装流程详解9——PackageParser解析APK(上)
linux可以运行apk(shell安装apk命令)
之前因为课程需要,也算是粗浅地了解过Linux,但是只是懂得一些编译内核,编译模块的知识,并没有把Linux当做日常使用的操作系统。但是最近因为实验的原因,对Linux有了兴趣,开始尝试将Linux作为日常使用的操作系统。特整理记录一些使用Linux常用知识,以供日后参考。
全栈程序员站长
2022/07/31
7K0
apk 反编译(使用android逆向助手,进行反编译apk,查看apk源码)
第二步:将apk文件拷贝到逆向助手的apktool目录,在逆向助手的apktool目录下按住shift同时点击鼠标右键,选择“在此处打开命令窗口,即CMD”
Twcat_tree
2022/11/30
3.9K0
apk 反编译(使用android逆向助手,进行反编译apk,查看apk源码)
【译】使用 APK Analyzer 分析你的 APK
本文来自“天天P图攻城狮”公众号(ttpic_dev) 本文是对 《Analyze Your Build with APK Analyzer》 的翻译。 Android Studio 2.2包含了APK Analyzer,通过它我们能够直观地看到APK的组成。使用APK Analyzer不仅能够减少你花在debug上的时间,而且还能减少你的APK大小。使用APK Analyzer,你能够实现: 查看APK中文件的绝对大小和相对大小。(译注:相对大小指的是该文件占整个APK大小的百分比) 理解DEX文件
腾讯Bugly
2018/03/23
2.5K0
APK安装流程详解10——PackageParser解析APK(下)
其中第一个parseBaseApk(File, AssetManager, int)方法,已经讲解过了,请参考APK安装流程详解9——PackageParser解析APK(上)中 五、PackageParse#parseMonolithicPackage(File, int)方法解析
隔壁老李头
2018/08/30
4.9K0
APK安装流程详解10——PackageParser解析APK(下)
【连载】聊聊 APK(四) —— 脱离 AS 手工创造 APK 文件
想进大厂,就关注「 程序亦非猿 」 时不时 8:38 推送优质文章,觉得有用,置顶加星标
程序亦非猿
2019/08/21
1.8K0
【连载】聊聊 APK(四) —— 脱离 AS 手工创造 APK 文件
9.5.3 Android Apk 反编译 & 9.5.4 Android Apk 加密
首先说一下,何为反编译,简单地说,从源码开始,经过集成开发环境编译以及签名之后得到apk文件的这个过程,我们称之为“编译”;“反编译”的话,顾名思义,粗略地说就是与“编译”相反的过程咯,也就是从apk文件开始,经过一系列工具解压最后得到源码的过程。当然,顺逆之言,说的只是起始点的逆反置换,个中具体的过程还是不尽相同的。
凌川江雪
2019/02/25
2.2K0
9.5.3 Android Apk 反编译 & 9.5.4 Android Apk 加密
【Android 逆向】APK 加壳脱壳现状 | 判断 APK 是否加壳 | APK 逆向流程
加壳覆盖率很高 : 当前的应用 , 基本上 90% 都会加壳 , 各大加固厂商 , 基本都 提供免费的加壳服务 ; 很难找到不加壳的应用 ;
韩曙亮
2023/03/30
4.1K0
【原创】Apktools反编译APK,查看apk信息,常用于安装apk失败原因分析。
目的:鉴于部分apk无法安装我们又无法知道原因时,我们需要用到工具apktools进行Apk的反编译
零点
2023/03/03
2.1K0
【原创】Apktools反编译APK,查看apk信息,常用于安装apk失败原因分析。
capacitor apk升级
npm install cordova-plugin-apkupdater import ApkUpdater from 'cordova-plugin-apkupdater'; ApkUpdater.download( 'https://your-update-server.com/update.apk', { onDownloadProgress: console.log }, function () { ApkUpdater.insta
Laikee
2022/04/25
8940
.apk 成为历史!
早在 2018 年 5 月的 Google I/O 大会上,Google 就介绍了 Android App Bundle(AAB)格式,作为其现代化开发的一部分。今年 8 月,AAB 格式将成为全新上架到 Google Play Store 应用的默认格式,已经上架的老应用暂时不会受到影响。
芋道源码
2021/07/13
9230
APK签名原理
网上已有多篇分析签名的类似文章,但是都有一个共同的问题,就是概念混乱,混乱的一塌糊涂。
全栈程序员站长
2022/07/01
8190
获取apk签名
方法一 1.解压apk 2.在META_INF目录下找到xxx.RSA文件 3.执行keytool -printcert -file xxxx.RSA目录
全栈程序员站长
2022/08/22
9680
APK 瘦身优化
官网:https://ibotpeaches.github.io/ApkTool apktool d students.apk
Yif
2020/04/23
1.4K0
APK 瘦身优化
Apk 签名验证
当app进行反编译后修改,再回编译,若出现闪退的情况时,则有可能是由于程序本身已存在签名验证,才会出现闪退,今天分享如何解决因签名验证而出现的闪退现象。
全栈程序员站长
2022/09/06
1.6K0
Apk 签名验证

相似问题

把肥皂包成捆

10

从两个apk /模块创建单个apk

12

如何将两个APK连接成一个APK?

12

把长值放进捆中

20

Android - Apk内部APK

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档