Impossibile determinare l'account di servizio per l'istanza di SQL Server

Microsoft.SQLServer.2008.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule (Rule)

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 ulteriori informazioni su SET QUOTED_IDENTIFIER, vedere l'argomento "SET QUOTED_IDENTIFIER" nella documentazione online.

Le virgolette singole o doppie utilizzate per contrassegnare l'inizio di una stringa letterale devono corrispondere alle virgolette utilizzate 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 utilizzano 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 ulteriori 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 utilizzando SET QUOTED_IDENTIFIER ON/OFF.

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Event_ID14353
Event Source$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
Impossibile determinare l'account di servizio per l'istanza di SQL Server
{0}
Event LogApplication
CommentMom2008ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2008GroupID={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.2008.Cannot_determine_the_service_account_for_SQL_Server_instance_1_5_Rule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true" Remotable="true" Comment="Mom2008ID='{9F3F26E8-EB1A-479F-A53F-BA44C789022D}';MOM2008GroupID={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.2008.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>