Fra*_*ani 4 sql-server t-sql azure-sql-database azure
我正在阅读这篇博客文章,其中包含一个查询,可以让您找到 a 何时DROP被解雇。我更改LIKE 'DROPOBJ%'为NOT LIKE 'DROPOBJ%'这样我可以返回更多行:
SELECT [Current LSN]
,[Operation]
,[Context]
,[Transaction ID]
,[Description]
,[Begin Time]
,[Transaction SID]
,[Transaction Name]
FROM fn_dblog (NULL,NULL)
INNER JOIN(SELECT [Transaction ID] AS tid
FROM fn_dblog(NULL,NULL)
WHERE [Transaction Name] NOT LIKE 'DROPOBJ%')fd ON [Transaction ID] = fd.tid
Run Code Online (Sandbox Code Playgroud)
该查询在 Azure SQL 数据库上轻松执行,但是当我尝试将SUSER_SNAME博客文章中所述的内容添加到代码中时:
SELECT [Current LSN]
,[Operation]
,[Context]
,[Transaction ID]
,[Description]
,[Begin Time]
,[Transaction SID]
,SUSER_SNAME ([Transaction SID]) AS WhoDidIt
FROM fn_dblog (NULL,NULL)
INNER JOIN(SELECT [Transaction ID] AS tid
FROM fn_dblog(NULL,NULL)
WHERE [Transaction Name] NOT LIKE 'DROPOBJ%')fd ON [Transaction ID] = fd.tid
Run Code Online (Sandbox Code Playgroud)
Azure SQL 数据库返回错误:
Msg 40507, Level 16, State 1, Line 1
'SUSER_SNAME' cannot be invoked with parameters in this version of SQL Server.
Run Code Online (Sandbox Code Playgroud)
我认为这一定是因为SUSER_SNAMEAzure SQL 数据库不支持,但如果我去查看文档,它会说:
SUSER_NAME 始终返回当前安全上下文的登录名。SUSER_SNAME 语句不支持通过 EXECUTE AS 使用模拟安全上下文执行。
但在这里我没有使用EXECUTE AS,事实上如果我运行:
SELECT SUSER_SNAME();
GO
Run Code Online (Sandbox Code Playgroud)
一切都很好,查询返回我的电子邮件:
我这里哪里错了?
文档SUSER_NAME不完整。SUSER_NAMEAzure SQL 数据库中的不支持该server_user_sid参数。我提交了文档更改的拉取请求。
尝试加入sys.database_principals而不是使用服务器范围的函数。这将获取数据库范围的主体的名称。
SELECT
l.[Current LSN]
,l.[Operation]
,l.[Context]
,l.[Transaction ID]
,l.[Description]
,l.[Begin Time]
,l.[Transaction SID]
,dp.name AS WhoDidIt
FROM fn_dblog (NULL,NULL) l
INNER JOIN(SELECT [Transaction ID] AS tid
FROM fn_dblog(NULL,NULL)
WHERE [Transaction Name] NOT LIKE '%DROPOBJ%') AS fd ON l.[Transaction ID] = fd.tid
LEFT JOIN sys.database_principals AS dp ON dp.sid = l.[Transaction SID];
Run Code Online (Sandbox Code Playgroud)
我看到dbo由我(管理员)进行的架构更改的用户和其他数据库用户所做的更改的其他用户名(使用 . 创建)CREATE USER UserName WITH PASSWORD=...。对于非数据库范围的主体(例如系统进程),该值为 NULL。
| 归档时间: |
|
| 查看次数: |
894 次 |
| 最近记录: |