最近我一直在使用 EXECUTE AS LOGIN 来检查某个人是否可以或不能在我们的一个数据库中使用表函数。测试表明他可以,但他一再报告失败。
该人使用登录“WEB”连接到数据库,并且他在该数据库中拥有与登录“WEB”关联的用户“WEB”,因此我尝试了以下脚本:
-- part 1
EXECUTE AS USER = 'WEB'
GO
SELECT
USER_NAME() AS 'user_name'
,SUSER_NAME() AS 'suser_name'
,SUSER_SNAME() AS 'suser_sname'
,SYSTEM_USER AS 'system_user'
GO
REVERT
GO
Run Code Online (Sandbox Code Playgroud)
和
-- part 2
EXECUTE AS LOGIN = 'WEB'
GO
SELECT
USER_NAME() AS 'user_name'
,SUSER_NAME() AS 'suser_name'
,SUSER_SNAME() AS 'suser_sname'
,SYSTEM_USER AS 'system_user'
GO
REVERT
GO
Run Code Online (Sandbox Code Playgroud)
第一部分很好,结果如下:
网站 | 网站 | 网站 | 网络
但是第二个结果有点令人困惑:
dbo | 网站 | 网站 | 网络
EXECUTE AS USER 和 EXECUTE AS LOGIN …
在尝试在两个 SQL Server 上运行 SSIS 包 SQL Server 代理作业时,我遇到了一些非常顽固的困难,一个在域中,一个不在域中。我在几十个不同的论坛上阅读了数百个帖子,可惜无济于事。应用我发现的修复程序和解决方案(例如,使用代理)只会导致(略微)不同的错误消息。从 Visual Studio 或直接从 SQL Server Management Studio 运行包时,它们按预期执行。
这是我到目前为止所得到的:
运行其步骤作为SQL Server 代理服务帐户运行的作业时,我收到以下错误消息:
以用户身份执行:NT Service\SQLSERVERAGENT。适用于 32 位的 Microsoft (R) SQL Server 执行包实用程序版本 13.0.1601.5 版权所有 (C) 2016 Microsoft。版权所有。开始时间:下午 2:59:44 由于错误 0x80131904,无法执行 IS 服务器包。服务器:172.16.2.107,包路径:\SSISDB\test\test sp …
标题说明(询问)这一切。是否可以在 SQL Server(2005 或更高版本)中的表同义词上创建触发器?