小编dlh*_*dlh的帖子

SQL Server 代理不遵守“执行为”权限

我有一个奇怪的权限问题。最近发生的事情导致配置为以特定用户身份运行的现有 SQL Server 代理作业停止工作。他们以前工作过;他们现在抛出基本权限错误(例如,SELECT 权限被拒绝)。

这是一个特定的测试用例。用户johndoe具有服务器级sysadmin角色。johndoe在 SQL Server Management Studio 中运行时,以下查询工作正常:

select * from TableA into TableB
Run Code Online (Sandbox Code Playgroud)

但是,当我将完全相同的查询放入单步 SQL Server 代理作业中,并将该步骤配置为以用户身份运行时johndoe,我收到以下错误。

以用户身份执行:johndoe。对象“TableA”、数据库“MyDatabase”、架构“dbo”的 SELECT 权限被拒绝。[SQLSTATE 42000](错误 229)。步骤失败。

关于什么可能导致这种看似自发的变化的任何建议?

sql-server-2008-r2 sql-server-agent

7
推荐指数
1
解决办法
8341
查看次数

SQL Server:更新触发器在插入触发器之前触发

我有一个带有 SQL Server 托管数据库的应用程序。我无权访问应用程序代码,但我可以完全访问数据库。我已将自己的自定义审计添加到表中以帮助调试。

我正在使用after触发器。以下是我的触发器的简化版本。

问题:我看到update在相应insert审计记录之前的审计记录。这怎么可能?差异只有几毫秒,对于我目前的目的并不重要,但我可以想象更糟糕的情况,其中程序逻辑取决于正确的年表。

我知道在相同类型的触发器(全部insert或全部update)之间控制触发器执行顺序的方法。我可以对异构触发器执行顺序做出哪些假设?

create trigger dbo.MyTrigger_i on dbo.theTable
after insert
as
begin
    set nocount on
    declare @Date datetime, @User sysname
    set @Date = GETDATE()
    set @User = SUSER_SNAME()
    insert into MyAudit (RowID, [Date], UserName, Comment)
            select i.ID, @Date, @User, 'Insert'
            from 
                inserted as i
end
go

create trigger dbo.MyTrigger_u on dbo.theTable
after update
as
begin
    set nocount on
    declare @Date datetime, @User sysname
    set @Date …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2008

6
推荐指数
1
解决办法
1万
查看次数