在我不知情的情况下更改了列的序数位置

Joe*_*yes 1 sql-server

我有一个乱序的列(通常,不是在 select 语句方面),我只是不知道它是如何变成那样的。

我一直在研究这个很长一段时间,结果是空的。我也无法在测试中重现它。

我已经通知开发人员,他们不允许运行未明确命名列的查询,正是出于这个原因。

然而,与此同时,我不知道我们是如何走到这种地步的,这让我很抓狂。

Aar*_*and 6

有人换了桌子,就这么简单。也许不是故意的,例如,他们可能已经在米老鼠表设计器中更改了其他内容,并且不小心单击并向上或向下拖动了一列。除非您进行了审计,ALTER或者DROP/CREATE事件仍在默认跟踪中,否则弄清楚谁和何时将是猜测:

DECLARE @path NVARCHAR(260);

SELECT 
   @path = REVERSE(SUBSTRING(REVERSE([path]), 
   CHARINDEX(CHAR(92), REVERSE([path])), 260)) + N'log.trc'
FROM    sys.traces
WHERE   is_default = 1;

SELECT 
  LoginName, HostName, ApplicationName, StartTime, Action = CASE EventClass 
    WHEN 46 THEN 'Create' WHEN 47 THEN 'Drop' ELSE 'Alter' END
FROM sys.fn_trace_gettable(@path, DEFAULT)
WHERE EventClass IN (46,47,164)
AND EventSubClass = 1
AND DatabaseName = N'your database name'
AND ObjectName = N'your table name'
ORDER BY EndTime DESC;
Run Code Online (Sandbox Code Playgroud)