MSSQL 2016: non è possibile determinare l'account del servizio per l'istanza di SQL Server

Microsoft.SQLServer.2016.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule (Rule)

Questo errore si verifica quando un'istruzione Transact-SQL contiene virgolette singole o doppie non corrispondenti. L'impostazione SET QUOTED_IDENTIFIER stabilisce le combinazioni valide di virgolette singole o doppie. Per altre informazioni su SET QUOTED_IDENTIFIER, vedere l'argomento "SET QUOTED_IDENTIFIER" nella documentazione online.

Knowledge Base article:

Cause

Questo errore si verifica quando un'istruzione Transact-SQL contiene virgolette singole o doppie non corrispondenti. L'impostazione SET QUOTED_IDENTIFIER stabilisce le combinazioni valide di virgolette singole o doppie. Per altre informazioni su SET QUOTED_IDENTIFIER, vedere l'argomento "SET QUOTED_IDENTIFIER" nella documentazione online.

Le virgolette singole o doppie usate per contrassegnare l'inizio di una stringa letterale devono corrispondere alle virgolette usate per contrassegnare la fine di tale stringa. Non è possibile delimitare la stessa stringa letterale accoppiando le virgolette singole con le virgolette doppie.

Le virgolette contenute all'interno della stringa letterale vengono gestite in modo diverso. Se una stringa letterale contiene una virgoletta singola ('), tale virgoletta può essere rappresentata da due virgolette singole (''). Se una stringa letterale è delimitata da virgolette doppie e SET QUOTED_IDENTIFIER è impostata su OFF, la stringa potrà contenere al suo interno virgolette singole, ad esempio apostrofi. Se una stringa letterale è delimitata da virgolette singole, indipendentemente dal fatto che SET QUOTED_IDENTIFIER sia impostata su ON o su OFF, la stringa potrà contenere al suo interno virgolette doppie.

Se non si usano il tipo e il numero corretto di virgolette in ogni punto del codice, viene restituito questo errore, generalmente accompagnato dall'errore "Sintassi non corretta in prossimità di %".

Per altre informazioni sulla gestione delle virgolette all'interno del codice, vedere gli articoli della Microsoft Knowledge Base seguenti:

311023 e 311021.

Per esempi di utilizzo delle virgolette, vedere l'argomento "SET QUOTED_IDENTIFIER" nella documentazione online.

Soluzioni

SELECT SESSIONPROPERTY('QUOTED_IDENTIFIER')

A seconda delle esigenze, è possibile modificare l'impostazione con SET QUOTED_IDENTIFIER ON/OFF.

Parametri di cui è possibile eseguire l'override

Nome

Descrizione

Valore predefinito

Abilitato

Abilita o disabilita il flusso di lavoro.

Priorità

Definisce la priorità dell'avviso.

1

Gravità

Definisce la gravità dell'avviso.

1

Element properties:

TargetMicrosoft.SQLServer.2016.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID14353
Event Source$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
MSSQL 2016: non è possibile determinare l'account del servizio per l'istanza di SQL Server
{0}
Event LogApplication
CommentMom2016ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2016GroupID={467ECC75-C5DA-42BD-955C-A73BBB51AF74}

Member Modules:

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

Source Code:

<Rule ID="Microsoft.SQLServer.2016.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule" Target="SQL2016Core!Microsoft.SQLServer.2016.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2016ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2016GroupID={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">
<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="SQL2016Core!Microsoft.SQLServer.2016.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.2016.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>