问题标签 [ddl-trigger]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5788 浏览

sql-server - 在计算列中使用来自另一个数据库的函数

我在单个数据库中安装了一组自定义 CLR 函数。当我需要在另一个数据库的查询/视图/过程中使用这些函数时,我只需通过三部分名称引用它们[db].[schema].[function](),它就可以正常工作。

但是由于错误,我不能在计算列中使用它们4120 A user-defined function name cannot be prefixed with a database name in this context

当然,使用两部分名称在同一数据库上添加计算列是没有问题的[schema].[function]()

任何想法如何解决这个问题?也许我可以在每个其他数据库中创建某种“快捷方式”函数来引用“原始”函数?或者我是否可以将这些函数安装在一个系统数据库中,使我能够仅使用函数的名称来调用函数,就像left()or一样substring()

现在,我用来更新和安装新函数的脚本在我需要这些函数的每个数据库以及modeldb 中执行相同的操作。但我希望有更优雅的方式来做到这一点。

0 投票
1 回答
253 浏览

sql-server - 了解 SQL Server 审计和 .sqlaudit 日志文件

回复:SQL Server 2008 EE 或 SQL Server 2012 EE 的 SQL Server AUDIT 组件

1)有没有人能够生成一个测试工具(即T-SQL)来映射哪些DDL语句触发了哪些审计事件?例如。DROP TABLE [table-name]触发DATABASE_CHANGE_GROUP事件。

是的,这个测试工具会非常大,但非常值得放在一起作为参考。我目前没有时间这样做,而且我看不到任何简单/快速的方法可以从.sqlaudit日志文件中“逆向工程”此信息(尽管必须有一种方法,因为我可以看到一个名为“ LOGbinder SQL' 做类似的事情 - 请参阅http://www.logbinder.com/products/LOGbinderSQL/default.aspx)。

.sqlaudit2) 有没有人根据我上面的第 1 点想出如何解析日志文件?我怀疑必须有一种方法可以连接表(.sqlaudit和其他类似的sys.dm_audit_class_type),使用action_idclass_type.sqlaudit以产生更具体的信息(ala LOGbinder)。

干杯,马克

0 投票
1 回答
2099 浏览

sql-server - SQL Server 跟踪 DDL 创建用户

我正在尝试跟踪用户的创建。我在许多帖子中查看了 DDL 触发器,但这些触发器似乎只跟踪对象,而不是用户。在 SQL Server 中创建或删除用户时,我是否可以跟踪/记录?

0 投票
2 回答
1557 浏览

sql-server - 登录的 DDL 触发器 将数据插入表

我的服务器上有一个以下 DDL 触发器

登录为Windows Authentication在 MyTable 上插入一行,但登录SQL Server Authentication如下错误:

编辑

GRANT INSERT在我的桌子上PUBLIC

但引发的错误没有变化。

编辑2

我更改触发器并添加With Execute AS 'sa'触发器

但引发的错误没有变化。

0 投票
2 回答
564 浏览

sql - SQL Server DDL 更改(列名、类型)

我需要审核对数据库所做的 DDL 更改。这些更改需要稍后在许多其他数据库中复制。我在这里发现可以启用 DDL 触发器来跟踪 DDL 活动,这对操作非常有用create tabledrop table因为触发器获取了已执行的 T-SQL,我可以愉快地将它存储在某个地方并简单地在另一个上执行它服务器稍后。

我遇到的问题是alter操作:当从 Management Studio 更改列名时,生成的事件不包含有关列的任何信息!它只是说表被锁定了...更重要的是,如果一次更改了许多列(例如,列foo => oof以及列bar => rab),则该事件仅触发一次!

我可怜的人的解决方案是有一个表来存储要在更改操作之前和之后更改的表的结构。这样,我可以比较两种结构并找出哪一列发生了什么。

但在我这样做之前,我想知道是否可以使用我忽略的 SQL Server 中的其他一些功能来做到这一点,或者也许有更好的方法。你会怎么做?

0 投票
1 回答
47 浏览

sql - 更新视图查询时是否可以执行触发器

当一个人更新了视图查询时,我希望触发一个函数。我的意思是当 SQL 用户编辑并保存视图时,我希望触发触发器。不是当 SQL 用户对视图运行 UPDATE 查询时触发。

这可能吗?如果是这样,有人可以给我看一个例子/指出我正确的方向吗?

谢谢,亚当

0 投票
1 回答
123 浏览

sql-server - 如何确定哪个 Action 触发了处理多个事件的触发器

我有一个记录 DDL 更改的数据库触发器。它具有以下格式

每当创建或更改表、视图或索引时,我想添加特殊处理。

如何确定哪个事件触发了处理多个事件的 TRIGGER 的触发器?

0 投票
1 回答
1336 浏览

sql-server - SQL Server 2012 ALL SERVER 触发器问题

我在设置 ALL SERVER 触发器时遇到问题。我正在使用 Adventureworks2012 数据库来尝试使审核触发器正常工作。理想情况下,如果有人在数据库级别进行更新、插入或删除,我希望将触发器写入一个名为 audit2012 的数据库。

我做了一个简单的触发器,当我更新等时写入表。我的问题是当我尝试将其更改为所有服务器时。这是SQL。如果我将目标更改为 ALL SERVER,则会收到错误消息:

消息 1098,级别 15,状态 1,过程 EmpTrig,第 4 行
指定的事件类型在指定的目标对象上无效。

代码:

感谢您的帮助。

0 投票
2 回答
802 浏览

sql-server - DDL 触发器示例

我想创建一个触发器,通过电子邮件向我发送在服务器中创建的数据库的名称。每当创建数据库时,我都会收到一封电子邮件。请帮忙。

我尝试了以下代码只是为了返回一个打印语句,但这不起作用:

0 投票
3 回答
9342 浏览

sql-server - 删除表上的 SQL Server DDL 触发器

我有一个包含几个表的数据库:tab1、tab2、tab3。如何仅为 tab2(不适用于 tab1 和 tab3)在 drop table 上创建 DDL 触发器。何时drop tab2调用我需要更新此表中的值但不删除 tab2。我怎样才能做到这一点?我发现了这个,但不明白它是如何工作的:

谢谢!