如何找到在SQL Server中重命名表的用户

问题描述 投票:-1回答:1

在共享数据库中一个用户重命名表现在我想要这个工作的用户ID

sql sql-server sql-server-2008 sql-server-2012
1个回答
0
投票
declare @newtablename sysname = 'newtablename';
create table dbo.atesttable(id int);
exec sp_rename 'dbo.atesttable', @newtablename;


select 
    suser_sname([Transaction SID]) as thelogin,
    (select name from sys.database_principals where sid = [Transaction SID]) as thedbuser,
    [Begin Time], [End Time],
    cast([rowlog contents 0] as nvarchar(max)), 
    cast([rowlog contents 1] as nvarchar(max))
from sys.fn_dblog(null, null)
where [Transaction ID] in
(
    select [Transaction ID]
    from sys.fn_dblog(null, null)
    where [Lock Information] like '%' + cast(object_id(@newtablename) as varchar(50)) + '%'
    intersect
    select [Transaction ID]
    from sys.fn_dblog(null, null)
    where cast([rowlog contents 1] as nvarchar(max)) like '%' + left(@newtablename, 10) + '%'
);


exec ('drop table ' + @newtablename)
go
© www.soinside.com 2019 - 2024. All rights reserved.