Das Dienstkonto für die Instanz von SQL Server kann nicht bestimmt werden

Microsoft.SQLServer.2005.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule (Rule)

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.

Für jedes einfache oder doppelte Anführungszeichen, mit dem der Anfang eines Literals markiert wird, muss ein entsprechendes Anführungszeichen desselben Typs vorhanden sein, um das Ende dieses Literals zu markieren. Ein einfaches Anführungszeichen kann nicht zusammen mit einem doppelten Anführungszeichen verwendet werden, um Anfang und Ende eines einzelnen Literals zu kennzeichnen.

Anführungszeichen, die Teil des Literals sind, werden anders gehandhabt. Wenn ein einfaches Anführungszeichen (') Teil des Literals ist, kann es durch zwei einfache Anführungszeichen ('') dargestellt werden. Wenn ein Literal durch doppelte Anführungszeichen begrenzt wird und SET QUOTED_IDENTIFIER auf OFF festgelegt ist, kann die Zeichenfolge eingebettete einfache Anführungszeichen, z. B. Apostrophe, enthalten. Wenn ein Literal durch einfache Anführungszeichen begrenzt wird und SET QUOTED_IDENTIFIER auf ON oder OFF festgelegt ist, kann die Zeichenfolge eingebettete doppelte Anführungszeichen enthalten.

Wenn Sie nicht überall im Code den richtigen Typ und die richtige Anzahl von Anführungszeichen verwenden, gibt SQL Server den oben aufgeführten Fehler, möglicherweise zusammen mit dem Fehler "Falsche Syntax in der Nähe von %", zurück.

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")

Je nach Anforderungen kann es notwendig sein, die Einstellung mithilfe von SET QUOTED_IDENTIFIER ON/OFF zu ändern.

Element properties:

TargetMicrosoft.SQLServer.2005.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID14353
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Das Dienstkonto für die Instanz von SQL Server kann nicht bestimmt werden
{0}
Event LogApplication
CommentMom2005ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2005GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

ID Module Type TypeId RunAs 
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ DataSource Microsoft.Windows.EventProvider Microsoft.SQLServer.SQLDefaultAccount
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2005.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule" Target="SQL2005Core!Microsoft.SQLServer.2005.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2005ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2005GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" Comment="{F6DA1507-12AF-11D3-AB21-00A0C98620CE}" TypeID="Windows!Microsoft.Windows.EventProvider" RunAs="SQL!Microsoft.SQLServer.SQLDefaultAccount">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>14353</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2005.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>