MSSQL für Linux: Dienstkonto für SQL Server-Instanz kann nicht ermittelt werden

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

Dieser Fehler tritt auf, wenn die Anzahl der Anführungszeichen (einfach oder doppelt) in einer Transact-SQL-Anweisung nicht ausgewogen ist. Mit SET QUOTED_IDENTIFIER werden die gültigen Kombinationen aus einfachen und doppelten Anführungszeichen festgelegt. Weitere Informationen zu SET QUOTED_IDENTIFIER finden Sie im Thema zu SET QUOTED_IDENTIFIER in der Onlinedokumentation.

Knowledge Base article:

Ursachen

Dieser Fehler tritt auf, wenn die Anzahl der Anführungszeichen (einfach oder doppelt) in einer Transact-SQL-Anweisung nicht ausgewogen ist. Mit SET QUOTED_IDENTIFIER werden die gültigen Kombinationen aus einfachen und doppelten Anführungszeichen festgelegt. Weitere Informationen zu SET QUOTED_IDENTIFIER finden Sie im Thema zu SET QUOTED_IDENTIFIER in der Onlinedokumentation.

Zu jedem einfachen oder doppelten Anführungszeichen zur Markierung des Anfangs einer Literalzeichenfolge muss ein entsprechendes Anführungszeichen des gleichen Typs zur Markierung des Endes der Literalzeichenfolge vorhanden sein. Zur Abgrenzung einer Literalzeichenfolge darf ein einfaches Anführungszeichen nicht mit einem doppelten Anführungszeichen kombiniert werden.

Anführungszeichen, die Teil einer Literalzeichenfolge sind, werden anders bearbeitet. Wenn ein einfaches Anführungszeichen (') Teil einer Literalzeichenfolge ist, kann dieses durch zwei doppelte Anführungszeichen (") dargestellt werden. Wenn eine Literalzeichenfolge durch doppelte Anführungszeichen abgegrenzt wird und SET QUOTED_IDENTIFIER nicht aktiv ist, kann die Zeichenfolge eingebettete einfache Anführungszeichen wie Apostrophe enthalten. Wenn eine Literalzeichenfolge durch einfache Anführungszeichen abgegrenzt wird und SET QUOTED_IDENTIFIER entweder aktiv oder inaktiv ist, kann die Zeichenfolge eingebettete doppelte Anführungszeichen enthalten.

Wenn Sie den richtigen Typ und die richtige Anzahl an Anführungszeichen an der passenden Stelle in Ihrem Code eingefügt haben, gibt SQL Server den obigen Fehler und eventuell den Fehler "Falsche Syntax bei %" aus.

Weitere Informationen zur Verwendung von Anführungszeichen im Code finden Sie in den folgenden Microsoft Knowledge Base-Artikeln:

311023 und 311021.

Beispiele für die Verwendung von Anführungszeichen finden Sie im Thema zu SET QUOTED_IDENTIFIER in der Onlinedokumentation.

Lösungen

SELECT SESSIONPROPERTY("QUOTED_IDENTIFIER")

Eventuell müssen Sie je nach Bedarf die Einstellung mit aktivem/inaktivem SET QUOTED_IDENTIFIER ändern.

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

300

Priorität

Definiert die Warnungspriorität.

1

Schweregrad

Definiert den Warnungsschweregrad.

1

Synchronisierungszeit

Synchronisierungszeit

 

Timeout (Sekunden)

Gibt die Zeit an, zu der der Workflow ausgeführt werden dann, bevor er geschlossen und als fehlerhaft markiert wird.

200

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL für Linux: Dienstkonto für SQL Server-Instanz kann nicht ermittelt werden
{0}
CommentMom2017ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';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.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule" Target="SqlDiscL!Microsoft.SQLServer.Linux.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2017ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';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>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>14353</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Linux.EventRule.DBEngine.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>