我有一个乱序的列(通常,不是在 select 语句方面),我只是不知道它是如何变成那样的。
我一直在研究这个很长一段时间,结果是空的。我也无法在测试中重现它。
我已经通知开发人员,他们不允许运行未明确命名列的查询,正是出于这个原因。
然而,与此同时,我不知道我们是如何走到这种地步的,这让我很抓狂。
有人换了桌子,就这么简单。也许不是故意的,例如,他们可能已经在米老鼠表设计器中更改了其他内容,并且不小心单击并向上或向下拖动了一列。除非您进行了审计,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)
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |