2013-02-01 11 views
8

Sto utilizzando linq su Entity per interrogare un database azzurro. Ho effettuato il login in azzurro per visualizzare una query che sta dando un problema particolare. Voglio effettivamente vedere i parametri passati, ma tutti gli azzurri mi danno sono sotto. Esiste un modo per visualizzare i parametri dopo che la query è già stata eseguita (ad esempio, la modifica del codice per registrarli non è un'opzione al momento).Visualizza i parametri passati a query blu tramite Linq all'entità framework

Quando si accede all'azzurro, accedere al portale di gestione - Database SQL | Prestazioni di query | Seleziona una query particolare. Riesco a vedere quanto segue: Il problema è che non riesco a vedere ciò che è stato passato nei parametri, ad es. @ p_ linq _19. Sto vedendo solo un segnaposto per parametro.

SELECT TOP (150) 
[Project1].[AlertIdentifier] AS [AlertIdentifier] 
FROM (SELECT 
[Extent1].[AlertIdentifier] AS [AlertIdentifier], 
[Extent1].[TimeReceived] AS [TimeReceived] 
FROM [dbo].[SecurityAlert] AS [Extent1] 
WHERE (2 <> [Extent1].[AlertStatusID]) AND ((convert(datetime2, '0001-01-01 00:00:00.0000000', 121) = @p__linq__0) OR ([Extent1].[DateScanned] >= @p__linq__1)) AND ((N'' = @p__linq__2) OR ([Extent1].[BettingShopIdentifier] LIKE @p__linq__3 ESCAPE N'~')) AND ((convert(datetime2, '0001-01-01 00:00:00.0000000', 121) = @p__linq__4) OR ([Extent1].[DateScanned] <= @p__linq__5)) AND ((cast(0 as float(53)) = @p__linq__6) OR (CAST([Extent1].[SlipStake] AS float) >= @p__linq__7)) AND ((@p__linq__8 < 1) OR ([Extent1].[SlipStatusID] = @p__linq__9)) AND ((cast(0 as float(53)) = @p__linq__10) OR (CAST([Extent1].[SlipPayoutActual] AS float) >= @p__linq__11) OR (CAST([Extent1].[SlipPayoutCalculated] AS float) >= @p__linq__12) OR (CAST([Extent1].[SlipPotentialReturn] AS float) >= @p__linq__13)) AND ((N'' = @p__linq__14) OR ([Extent1].[AlertSummary] LIKE @p__linq__15 ESCAPE N'~')) AND ((N'' = @p__linq__16) OR ([Extent1].[StaffScannedByUsername] LIKE @p__linq__17 ESCAPE N'~') OR ([Extent1].[StaffPayoutUsername] LIKE @p__linq__18 ESCAPE N'~') OR ([Extent1].[StaffEditedByUsername] LIKE @p__linq__19 ESCAPE N'~')) 
) AS [Project1] 
ORDER BY [Project1].[TimeReceived] ASC 
+0

Come hai ottenuto questo risultato, quale query hai eseguito? – astaykov

+0

@astaykov, accesso al portale azzurro, Management Portal - Database SQL | Prestazioni di query | Seleziona una query particolare. Il problema è che non riesco a vedere cosa viene passato in quei parametri. – DermFrench

+0

sei sicuro di non vedere i parametri passati? Sembra che tu stia vedendo l'intera query che dovrebbe contenere i param in nomi strani come @ p__linq__0 o giù di lì. –

risposta

0

È possibile controllare le prestazioni della query nel portale di amministrazione. Here is link how to do it.

È inoltre possibile connettersi al database azzurro tramite studio di gestione. Here is a link how to do it. Qui è possibile controllare il piano di query e richiamare manualmente la query.

+0

non si può realmente SQL Server Profiler con SQL Azure. Inoltre tutto ciò che hai fornito è una diagnostica basata su 'history' e non sul' monitoraggio in tempo reale 'come fa SQL Server Profiler. E il tuo collegamento non è affatto 'puoi connetterti a sql profiler'. È solo, come diagnosticare e eseguire il debug di SQL Azure: è molto utile, ma non si usa 'SQL Server Profiler' – astaykov

1

Vorrei andare per l'opzione miniprofiler. Puoi scaricarlo qui: http://miniprofiler.com/ e configurarlo per profilare le tue connessioni SQL.

Naturalmente non lo accenderei per la produzione. È possibile utilizzarlo solo per gli scenari di debug/staging o configurare il profiler per eseguire il rendering solo quando un utente amministratore specifico è connesso.

1

Un modo efficace, anche se richiede un po 'di lavoro di configurazione, è impostare la traccia su il livello di Entity Framework. In questo modo è possibile registrare tutte le istruzioni SQL eseguite a livello di applicazione.

Suggerisco di utilizzare Community Entity Framework Provider Wrappers, disponibile anche come NuGet package.

È del 2011 ma è possibile trovare le istruzioni per utilizzarlo con le versioni più recenti di Entity Framework in this answer e in this forum thread.

C'è uno original blog post da una versione precedente che spiega come funziona questo wrapper.

Un'altra alternativa è l'utilizzo di MiniProfiler, come suggested by amhed.