我们正在将我们的一个应用程序用户登录从dbowner
一个更细化的权限方案更改为最终。
在 SQL Server 2016 中是否有一种方法可以跟踪权限违规?也就是说,这个新用户不能从表 dbo 中选择。TableName以便我可以查看它并确定它是否合适。
我知道我可以从事物的程序方面捕获错误并记录它们,但如果数据库可以为我记录它,我宁愿不依赖它。
我们正在将我们的一个应用程序用户登录从dbowner
一个更细化的权限方案更改为最终。
在 SQL Server 2016 中是否有一种方法可以跟踪权限违规?也就是说,这个新用户不能从表 dbo 中选择。TableName以便我可以查看它并确定它是否合适。
我知道我可以从事物的程序方面捕获错误并记录它们,但如果数据库可以为我记录它,我宁愿不依赖它。
我们的一些 SQL 服务器上出现了一些零星的连接错误。我做了一些搜索,发现了 SQL 2008 R2 中的 Ring Buffer 并找到了一些信息,但我不完全确定如何弄清楚。
运行查询
SELECT CAST(record AS XML)
FROM sys.dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_CONNECTIVITY'
给我一些结果,其中很有趣
<Record id="4" type="RING_BUFFER_CONNECTIVITY" time="461419385">
<ConnectivityTraceRecord>
<RecordType>LoginTimers</RecordType>
<Spid>0</Spid>
<SniConnectionId>40A403B2-B860-4877-A1D3-1FA7024356B7</SniConnectionId>
<SniConsumerError>17830</SniConsumerError>
<SniProvider>4</SniProvider>
<State>11</State>
<RemoteHost><local machine></RemoteHost>
<RemotePort>0</RemotePort>
<LocalHost />
<LocalPort>0</LocalPort>
<RecordTime>5/19/2012 16:29:23.831</RecordTime>
<TdsBuffersInformation>
<TdsInputBufferError>109</TdsInputBufferError>
<TdsOutputBufferError>0</TdsOutputBufferError>
<TdsInputBufferBytes>0</TdsInputBufferBytes>
</TdsBuffersInformation>
<LoginTimers>
<TotalLoginTimeInMilliseconds>18010</TotalLoginTimeInMilliseconds>
<LoginTaskEnqueuedInMilliseconds>0</LoginTaskEnqueuedInMilliseconds>
<NetworkWritesInMilliseconds>0</NetworkWritesInMilliseconds>
<NetworkReadsInMilliseconds>18010</NetworkReadsInMilliseconds>
<SslProcessingInMilliseconds>0</SslProcessingInMilliseconds>
<SspiProcessingInMilliseconds>0</SspiProcessingInMilliseconds>
<LoginTriggerAndResourceGovernorProcessingInMilliseconds>0</LoginTriggerAndResourceGovernorProcessingInMilliseconds>
</LoginTimers>
</ConnectivityTraceRecord>
<Stack>...</Stack>
</Record>
所以,我的问题是,我在哪里可以找到 TDS 错误编号的含义。在这种情况下<TdsInputBufferError>109</TdsInputBufferError>