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:
Beispiele für die Verwendung von Anführungszeichen finden Sie im Thema zu SET QUOTED_IDENTIFIER in der Onlinedokumentation.
SELECT SESSIONPROPERTY("QUOTED_IDENTIFIER")
Eventuell müssen Sie je nach Bedarf die Einstellung mit aktivem/inaktivem SET QUOTED_IDENTIFIER ändern.
Überprüfen Sie mit dem folgenden Transact-SQL-Befehl, wie QUOTED_IDENTIFIER für die aktuelle Sitzung festgelegt wurde: SELECT SESSIONPROPERTY("QUOTED_IDENTIFIER"). Je nach Anforderungen kann es notwendig sein, die Einstellung mithilfe von SET QUOTED_IDENTIFIER ON/OFF zu ändern.
Prüfen Sie, ob zu jedem zur Abgrenzung einer Zeichenfolge vorgesehene Anführungszeichen ein entsprechendes Anführungszeichen des gleichen Typs vorhanden ist.
Überprüfen Sie, ob jedes Anführungszeichen, das Teil der Literalzeichenfolge ist, durch zwei Anführungszeichen desselben Typs dargestellt wird.
Name | Beschreibung | Standardwert |
Aktiviert | Aktiviert oder deaktiviert den Workflow. | Ja |
Priorität | Definiert die Warnungspriorität. | 1 |
Schweregrad | Definiert den Warnungsschweregrad. | 1 |
Target | Microsoft.SQLServer.2012.DBEngine | ||
Category | EventCollection | ||
Enabled | True | ||
Event_ID | 14353 | ||
Event Source | $Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$ | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application | ||
Comment | Mom2012ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2012GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74} |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.Windows.EventProvider | Microsoft.SQLServer.SQLDefaultAccount |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.2012.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule" Target="SQL2012Core!Microsoft.SQLServer.2012.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2012ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2012GroupID={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.2012.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>Event ID: $Data/EventDisplayNumber$. $Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>