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:
Beispiele für die Verwendung von Anführungszeichen finden Sie im Thema zu SET QUOTED_IDENTIFIER in der Onlinedokumentation.
SELECT SESSIONPROPERTY("QUOTED_IDENTIFIER")
Je nach Anforderungen kann es notwendig sein, die Einstellung mithilfe von SET QUOTED_IDENTIFIER ON/OFF zu ä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.
Stellen Sie sicher, dass es für jedes Anführungszeichen, das eine Zeichenfolge begrenzen soll, ein zugehöriges Anführungszeichen desselben Typs gibt.
Stellen Sie sicher, dass jedes Anführungszeichen, das Teil des Literals ist, durch zwei Anführungszeichen desselben Typs dargestellt wird.
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>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>