Linux 上的 MSSQL: 与其他 Service Broker 或数据库镜像主机连接时出现安全性(SSPI)错误

Microsoft.SQLServer.Linux.EventRule.DBEngine.A_security__SSPI__error_occurred_when_connecting_to_another_Service_Broker_or_Database_Mirroring_host_5_Rule (Rule)

当 Service Broker 传输安全模式使用 SSPI 时,远程数据库的服务帐户必须具有 master 数据库中的 CONNECT 权限。远程 SQL Server 实例应允许远程主机使用的帐户使用 Linux 身份验证。不要求登录拥有其他权限或在任何数据库中拥有对象。

Knowledge Base article:

摘要

当 Service Broker 传输安全模式使用 SSPI 时,远程数据库的服务帐户必须具有 master 数据库中的 CONNECT 权限。远程 SQL Server 实例应允许远程主机使用的帐户使用 Linux 身份验证。不要求登录拥有其他权限或在任何数据库中拥有对象。

解决方法

确保远程数据库的服务帐户在 master 数据库中具有 CONNECT 权限。

可替代参数

名称

说明

默认值

已启用

启用或禁用工作流。

间隔(秒)

运行工作流的重复间隔时间(秒)。

300

优先级

定义警报优先级。

1

严重性

定义警报严重性。

2

同步时间

同步时间

 

超时(秒)

指定工作流在关闭之前允许运行的时间,并标记为失败。

200

数据库连接超时(秒)

如果在指定期间无法访问数据库,工作流将失败并注册一个事件。

15

Element properties:

TargetMicrosoft.SQLServer.Linux.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
Linux 上的 MSSQL: 与其他 Service Broker 或数据库镜像主机连接时出现安全性(SSPI)错误
{0}
CommentMom2017ID='{C0356031-F1FD-4825-B76A-4C4AC05D3E17}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.Linux.EventRule.DBEngine.A_security__SSPI__error_occurred_when_connecting_to_another_Service_Broker_or_Database_Mirroring_host_5_Rule" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{C0356031-F1FD-4825-B76A-4C4AC05D3E17}';MOM2017GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Microsoft.SQLServer.Linux.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>9649</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.DBEngine.A_security__SSPI__error_occurred_when_connecting_to_another_Service_Broker_or_Database_Mirroring_host_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>