SqlDependency中的语句订阅无效

时间:2016-04-11 08:18:37

标签: c# sql-server

对于SQL数据库中的某些更改,我必须使用SqlDependency使Notifier变得容易。我搜索了所有在线指南,但它没有用。我也见过SqlDependency notification - immediate failure notification after executing query和这个https://msdn.microsoft.com/en-us/library/ms181122.aspx解决方案数据库在SQL Server 2012上,结构如下:

image1

这是我要通知的表格:

image2 image3

这是我的实际数据库选项:

image4 image5

我还为用户设置了Service Broker和权限。

我的代码结构如下:

var info = new SABIntegrationEntities1();
using (var notifer = new EntityChangeNotifier<SpRicezioneSpedizioniLight, SABIntegrationEntities1>(p => p.SPEDIZIONE_STATO_GENERAZIONE != "I"))
{
    notifer.Error += (sender, e) =>
    {
        Console.WriteLine("[{0}, {1}, {2}]:\n{3}", e.Reason.Info, e.Reason.Source, e.Reason.Type, e.Sql);
    };

    notifer.Changed += (sender, e) =>
    {
        p.SPEDIZIONE_STATO_GENERAZIONE = "G";
    };
}

来自互联网的另一个项目的功能正常:

public EntityChangeNotifier(Expression<Func<TEntity, bool>> query)
{
    _context = new TDbContext();
    _query = query;
    _connectionString = _context.Database.Connection.ConnectionString;

    SafeCountDictionary.Increment(_connectionString, x => { SqlDependency.Start(x); });
    RegisterNotification();
}

private void RegisterNotification()
{
    _context = new TDbContext();

    using (SqlConnection connection = new SqlConnection(_connectionString))
    {
        using (SqlCommand command = GetCommand())
        {
            command.Connection = connection;
            connection.Open();

            var sqlDependency = new SqlDependency(command);
            sqlDependency.OnChange += new OnChangeEventHandler(_sqlDependency_OnChange);

            // NOTE: You have to execute the command, or the notification will never fire.
            using (SqlDataReader reader = command.ExecuteReader())
            {
            }
        }
    }
}

当通知开始时,项目立即进入notifier.error并出现以下异常:

> 2016-04-11 09:56:33,340 [12108] ERROR TestWINEOWINE.Form1 - [Invalid, Statement, Subscribe]:
SELECT 
    [Extent1].[AudOperation] AS [AudOperation], 
    [Extent1].[AudDateLog] AS [AudDateLog], 
    [Extent1].[PROGRESSIVO] AS [PROGRESSIVO], 
    [Extent1].[SOCIETA] AS [SOCIETA], 
    [Extent1].[SPEDIZIONE_STATO_GENERAZIONE] AS [SPEDIZIONE_STATO_GENERAZIONE], 
    [Extent1].[SPEDIZIONE_TIPO] AS [SPEDIZIONE_TIPO], 
    [Extent1].[SPEDIZIONE_ANNO] AS [SPEDIZIONE_ANNO], 
    [Extent1].[SPEDIZIONE_FILIALE] AS [SPEDIZIONE_FILIALE], 
    [Extent1].[SPEDIZIONE_NUMERO] AS [SPEDIZIONE_NUMERO], 
    [Extent1].[TERRA_MARE_AEREO] AS [TERRA_MARE_AEREO], 
    [Extent1].[IMPORT_EXPORT] AS [IMPORT_EXPORT], 
    [Extent1].[FILIALE] AS [FILIALE], 
    [Extent1].[TIPO_SERVIZIO] AS [TIPO_SERVIZIO], 
    [Extent1].[TIPO_TRASPORTO] AS [TIPO_TRASPORTO], 
    [Extent1].[PRIORITA] AS [PRIORITA], 
    [Extent1].[SETTORE] AS [SETTORE], 
    [Extent1].[RIFERIMENTO_COMMITTENTE] AS [RIFERIMENTO_COMMITTENTE], 
    [Extent1].[RIFERIMENTO_ORDINE] AS [RIFERIMENTO_ORDINE], 
    [Extent1].[RIFERIMENTO_INTERNO] AS [RIFERIMENTO_INTERNO], 
    [Extent1].[RIFERIMENTO_INTERNO_EXTRA] AS [RIFERIMENTO_INTERNO_EXTRA], 
    [Extent1].[RESA] AS [RESA], 
    [Extent1].[LINEA] AS [LINEA], 
    [Extent1].[MERCE_CODICE] AS [MERCE_CODICE], 
    [Extent1].[MERCE_DESCRIZIONE] AS [MERCE_DESCRIZIONE], 
    [Extent1].[COMMITTENTE] AS [COMMITTENTE], 
    [Extent1].[TIPO_VEICOLO_RICHIESTO] AS [TIPO_VEICOLO_RICHIESTO], 
    [Extent1].[ASSICURAZIONE_VALUTA] AS [ASSICURAZIONE_VALUTA], 
    [Extent1].[ASSICURAZIONE_IMPORTO] AS [ASSICURAZIONE_IMPORTO], 
    [Extent1].[PESO_LORDO] AS [PESO_LORDO], 
    [Extent1].[PESO_NETTO] AS [PESO_NETTO], 
    [Extent1].[VOLUME] AS [VOLUME], 
    [Extent1].[METRI_LINEARI] AS [METRI_LINEARI], 
    [Extent1].[IMBALLI] AS [IMBALLI], 
    [Extent1].[PALETTE] AS [PALETTE], 
    [Extent1].[ARRIVO_TIPO] AS [ARRIVO_TIPO], 
    [Extent1].[ARRIVO_DATA_ORA] AS [ARRIVO_DATA_ORA], 
    [Extent1].[ARRIVO_CORRISPONDENTE] AS [ARRIVO_CORRISPONDENTE], 
    [Extent1].[ARRIVO_DEPOSITO] AS [ARRIVO_DEPOSITO], 
    [Extent1].[ARRIVO_UBICAZIONE] AS [ARRIVO_UBICAZIONE], 
    [Extent1].[CONSEGNA_TIPO] AS [CONSEGNA_TIPO], 
    [Extent1].[CONSEGNA_DATA_ORA_RICHIESTA_TIPO] AS [CONSEGNA_DATA_ORA_RICHIESTA_TIPO], 
    [Extent1].[CONSEGNA_DATA_ORA_RICHIESTA_INIZIO] AS [CONSEGNA_DATA_ORA_RICHIESTA_INIZIO], 
    [Extent1].[CONSEGNA_DATA_ORA_RICHIESTA_FINE] AS [CONSEGNA_DATA_ORA_RICHIESTA_FINE], 
    [Extent1].[CONSEGNA_PREAVVISO] AS [CONSEGNA_PREAVVISO], 
    [Extent1].[CONSEGNA_CORRISPONDENTE] AS [CONSEGNA_CORRISPONDENTE], 
    [Extent1].[CONSEGNA_DEPOSITO] AS [CONSEGNA_DEPOSITO], 
    [Extent1].[MITTENTE_RAGIONE_SOCIALE] AS [MITTENTE_RAGIONE_SOCIALE], 
    [Extent1].[MITTENTE_INDIRIZZO] AS [MITTENTE_INDIRIZZO], 
    [Extent1].[MITTENTE_CAP] AS [MITTENTE_CAP], 
    [Extent1].[MITTENTE_LOCALITA] AS [MITTENTE_LOCALITA], 
    [Extent1].[MITTENTE_SITO] AS [MITTENTE_SITO], 
    [Extent1].[MITTENTE_PROVINCIA] AS [MITTENTE_PROVINCIA], 
    [Extent1].[MITTENTE_NAZIONE] AS [MITTENTE_NAZIONE], 
    [Extent1].[MITTENTE_ZONA] AS [MITTENTE_ZONA], 
    [Extent1].[MITTENTE_RIFERIMENTO] AS [MITTENTE_RIFERIMENTO], 
    [Extent1].[DESTINATARIO_RAGIONE_SOCIALE] AS [DESTINATARIO_RAGIONE_SOCIALE], 
    [Extent1].[DESTINATARIO_INDIRIZZO] AS [DESTINATARIO_INDIRIZZO], 
    [Extent1].[DESTINATARIO_CAP] AS [DESTINATARIO_CAP], 
    [Extent1].[DESTINATARIO_LOCALITA] AS [DESTINATARIO_LOCALITA], 
    [Extent1].[DESTINATARIO_SITO] AS [DESTINATARIO_SITO], 
    [Extent1].[DESTINATARIO_PROVINCIA] AS [DESTINATARIO_PROVINCIA], 
    [Extent1].[DESTINATARIO_NAZIONE] AS [DESTINATARIO_NAZIONE], 
    [Extent1].[DESTINATARIO_ZONA] AS [DESTINATARIO_ZONA], 
    [Extent1].[DESTINATARIO_RIFERIMENTO] AS [DESTINATARIO_RIFERIMENTO], 
    [Extent1].[PROVENIENZA_RAGIONE_SOCIALE] AS [PROVENIENZA_RAGIONE_SOCIALE], 
    [Extent1].[PROVENIENZA_INDIRIZZO] AS [PROVENIENZA_INDIRIZZO], 
    [Extent1].[PROVENIENZA_CAP] AS [PROVENIENZA_CAP], 
    [Extent1].[PROVENIENZA_LOCALITA] AS [PROVENIENZA_LOCALITA], 
    [Extent1].[PROVENIENZA_SITO] AS [PROVENIENZA_SITO], 
    [Extent1].[PROVENIENZA_PROVINCIA] AS [PROVENIENZA_PROVINCIA], 
    [Extent1].[PROVENIENZA_NAZIONE] AS [PROVENIENZA_NAZIONE], 
    [Extent1].[PROVENIENZA_ZONA] AS [PROVENIENZA_ZONA], 
    [Extent1].[DESTINAZIONE_RAGIONE_SOCIALE] AS [DESTINAZIONE_RAGIONE_SOCIALE], 
    [Extent1].[DESTINAZIONE_INDIRIZZO] AS [DESTINAZIONE_INDIRIZZO], 
    [Extent1].[DESTINAZIONE_CAP] AS [DESTINAZIONE_CAP], 
    [Extent1].[DESTINAZIONE_LOCALITA] AS [DESTINAZIONE_LOCALITA], 
    [Extent1].[DESTINAZIONE_SITO] AS [DESTINAZIONE_SITO], 
    [Extent1].[DESTINAZIONE_PROVINCIA] AS [DESTINAZIONE_PROVINCIA], 
    [Extent1].[DESTINAZIONE_NAZIONE] AS [DESTINAZIONE_NAZIONE], 
    [Extent1].[DESTINAZIONE_ZONA] AS [DESTINAZIONE_ZONA], 
    [Extent1].[VERIFICA_MERCE] AS [VERIFICA_MERCE], 
    [Extent1].[DDT_DATA] AS [DDT_DATA], 
    [Extent1].[DDT_NUMERO] AS [DDT_NUMERO], 
    [Extent1].[ID_STAMPANTE] AS [ID_STAMPANTE], 
    [Extent1].[CONSEGNA_TIPO_SERVIZIO] AS [CONSEGNA_TIPO_SERVIZIO], 
    [Extent1].[ORDINAMENTO] AS [ORDINAMENTO], 
    [Extent1].[DESTINATARIO_INTERLOCUTORE_TIPO] AS [DESTINATARIO_INTERLOCUTORE_TIPO], 
    [Extent1].[DESTINATARIO_INTERLOCUTORE_NOMINATIVO] AS [DESTINATARIO_INTERLOCUTORE_NOMINATIVO], 
    [Extent1].[DESTINATARIO_INTERLOCUTORE_E_MAIL] AS [DESTINATARIO_INTERLOCUTORE_E_MAIL], 
    [Extent1].[DESTINATARIO_INTERLOCUTORE_CELLULARE] AS [DESTINATARIO_INTERLOCUTORE_CELLULARE]
    FROM (SELECT 
[SpRicezioneSpedizioniLight].[AudOperation] AS [AudOperation], 
[SpRicezioneSpedizioniLight].[AudDateLog] AS [AudDateLog], 
[SpRicezioneSpedizioniLight].[PROGRESSIVO] AS [PROGRESSIVO], 
[SpRicezioneSpedizioniLight].[SOCIETA] AS [SOCIETA], 
[SpRicezioneSpedizioniLight].[SPEDIZIONE_STATO_GENERAZIONE] AS [SPEDIZIONE_STATO_GENERAZIONE], 
[SpRicezioneSpedizioniLight].[SPEDIZIONE_TIPO] AS [SPEDIZIONE_TIPO], 
[SpRicezioneSpedizioniLight].[SPEDIZIONE_ANNO] AS [SPEDIZIONE_ANNO], 
[SpRicezioneSpedizioniLight].[SPEDIZIONE_FILIALE] AS [SPEDIZIONE_FILIALE], 
[SpRicezioneSpedizioniLight].[SPEDIZIONE_NUMERO] AS [SPEDIZIONE_NUMERO], 
[SpRicezioneSpedizioniLight].[TERRA_MARE_AEREO] AS [TERRA_MARE_AEREO], 
[SpRicezioneSpedizioniLight].[IMPORT_EXPORT] AS [IMPORT_EXPORT], 
[SpRicezioneSpedizioniLight].[FILIALE] AS [FILIALE], 
[SpRicezioneSpedizioniLight].[TIPO_SERVIZIO] AS [TIPO_SERVIZIO], 
[SpRicezioneSpedizioniLight].[TIPO_TRASPORTO] AS [TIPO_TRASPORTO], 
[SpRicezioneSpedizioniLight].[PRIORITA] AS [PRIORITA], 
[SpRicezioneSpedizioniLight].[SETTORE] AS [SETTORE], 
[SpRicezioneSpedizioniLight].[RIFERIMENTO_COMMITTENTE] AS [RIFERIMENTO_COMMITTENTE], 
[SpRicezioneSpedizioniLight].[RIFERIMENTO_ORDINE] AS [RIFERIMENTO_ORDINE], 
[SpRicezioneSpedizioniLight].[RIFERIMENTO_INTERNO] AS [RIFERIMENTO_INTERNO], 
[SpRicezioneSpedizioniLight].[RIFERIMENTO_INTERNO_EXTRA] AS [RIFERIMENTO_INTERNO_EXTRA], 
[SpRicezioneSpedizioniLight].[RESA] AS [RESA], 
[SpRicezioneSpedizioniLight].[LINEA] AS [LINEA], 
[SpRicezioneSpedizioniLight].[MERCE_CODICE] AS [MERCE_CODICE], 
[SpRicezioneSpedizioniLight].[MERCE_DESCRIZIONE] AS [MERCE_DESCRIZIONE], 
[SpRicezioneSpedizioniLight].[COMMITTENTE] AS [COMMITTENTE], 
[SpRicezioneSpedizioniLight].[TIPO_VEICOLO_RICHIESTO] AS [TIPO_VEICOLO_RICHIESTO], 
[SpRicezioneSpedizioniLight].[ASSICURAZIONE_VALUTA] AS [ASSICURAZIONE_VALUTA], 
[SpRicezioneSpedizioniLight].[ASSICURAZIONE_IMPORTO] AS [ASSICURAZIONE_IMPORTO], 
[SpRicezioneSpedizioniLight].[PESO_LORDO] AS [PESO_LORDO], 
[SpRicezioneSpedizioniLight].[PESO_NETTO] AS [PESO_NETTO], 
[SpRicezioneSpedizioniLight].[VOLUME] AS [VOLUME], 
[SpRicezioneSpedizioniLight].[METRI_LINEARI] AS [METRI_LINEARI], 
[SpRicezioneSpedizioniLight].[IMBALLI] AS [IMBALLI], 
[SpRicezioneSpedizioniLight].[PALETTE] AS [PALETTE], 
[SpRicezioneSpedizioniLight].[ARRIVO_TIPO] AS [ARRIVO_TIPO], 
[SpRicezioneSpedizioniLight].[ARRIVO_DATA_ORA] AS [ARRIVO_DATA_ORA], 
[SpRicezioneSpedizioniLight].[ARRIVO_CORRISPONDENTE] AS [ARRIVO_CORRISPONDENTE], 
[SpRicezioneSpedizioniLight].[ARRIVO_DEPOSITO] AS [ARRIVO_DEPOSITO], 
[SpRicezioneSpedizioniLight].[ARRIVO_UBICAZIONE] AS [ARRIVO_UBICAZIONE], 
[SpRicezioneSpedizioniLight].[CONSEGNA_TIPO] AS [CONSEGNA_TIPO], 
[SpRicezioneSpedizioniLight].[CONSEGNA_DATA_ORA_RICHIESTA_TIPO] AS [CONSEGNA_DATA_ORA_RICHIESTA_TIPO], 
[SpRicezioneSpedizioniLight].[CONSEGNA_DATA_ORA_RICHIESTA_INIZIO] AS [CONSEGNA_DATA_ORA_RICHIESTA_INIZIO], 
[SpRicezioneSpedizioniLight].[CONSEGNA_DATA_ORA_RICHIESTA_FINE] AS [CONSEGNA_DATA_ORA_RICHIESTA_FINE], 
[SpRicezioneSpedizioniLight].[CONSEGNA_PREAVVISO] AS [CONSEGNA_PREAVVISO], 
[SpRicezioneSpedizioniLight].[CONSEGNA_CORRISPONDENTE] AS [CONSEGNA_CORRISPONDENTE], 
[SpRicezioneSpedizioniLight].[CONSEGNA_DEPOSITO] AS [CONSEGNA_DEPOSITO], 
[SpRicezioneSpedizioniLight].[MITTENTE_RAGIONE_SOCIALE] AS [MITTENTE_RAGIONE_SOCIALE], 
[SpRicezioneSpedizioniLight].[MITTENTE_INDIRIZZO] AS [MITTENTE_INDIRIZZO], 
[SpRicezioneSpedizioniLight].[MITTENTE_CAP] AS [MITTENTE_CAP], 
[SpRicezioneSpedizioniLight].[MITTENTE_LOCALITA] AS [MITTENTE_LOCALITA], 
[SpRicezioneSpedizioniLight].[MITTENTE_SITO] AS [MITTENTE_SITO], 
[SpRicezioneSpedizioniLight].[MITTENTE_PROVINCIA] AS [MITTENTE_PROVINCIA], 
[SpRicezioneSpedizioniLight].[MITTENTE_NAZIONE] AS [MITTENTE_NAZIONE], 
[SpRicezioneSpedizioniLight].[MITTENTE_ZONA] AS [MITTENTE_ZONA], 
[SpRicezioneSpedizioniLight].[MITTENTE_RIFERIMENTO] AS [MITTENTE_RIFERIMENTO], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_RAGIONE_SOCIALE] AS [DESTINATARIO_RAGIONE_SOCIALE], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_INDIRIZZO] AS [DESTINATARIO_INDIRIZZO], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_CAP] AS [DESTINATARIO_CAP], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_LOCALITA] AS [DESTINATARIO_LOCALITA], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_SITO] AS [DESTINATARIO_SITO], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_PROVINCIA] AS [DESTINATARIO_PROVINCIA], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_NAZIONE] AS [DESTINATARIO_NAZIONE], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_ZONA] AS [DESTINATARIO_ZONA], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_RIFERIMENTO] AS [DESTINATARIO_RIFERIMENTO], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_RAGIONE_SOCIALE] AS [PROVENIENZA_RAGIONE_SOCIALE], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_INDIRIZZO] AS [PROVENIENZA_INDIRIZZO], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_CAP] AS [PROVENIENZA_CAP], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_LOCALITA] AS [PROVENIENZA_LOCALITA], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_SITO] AS [PROVENIENZA_SITO], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_PROVINCIA] AS [PROVENIENZA_PROVINCIA], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_NAZIONE] AS [PROVENIENZA_NAZIONE], 
[SpRicezioneSpedizioniLight].[PROVENIENZA_ZONA] AS [PROVENIENZA_ZONA], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_RAGIONE_SOCIALE] AS [DESTINAZIONE_RAGIONE_SOCIALE], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_INDIRIZZO] AS [DESTINAZIONE_INDIRIZZO], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_CAP] AS [DESTINAZIONE_CAP], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_LOCALITA] AS [DESTINAZIONE_LOCALITA], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_SITO] AS [DESTINAZIONE_SITO], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_PROVINCIA] AS [DESTINAZIONE_PROVINCIA], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_NAZIONE] AS [DESTINAZIONE_NAZIONE], 
[SpRicezioneSpedizioniLight].[DESTINAZIONE_ZONA] AS [DESTINAZIONE_ZONA], 
[SpRicezioneSpedizioniLight].[VERIFICA_MERCE] AS [VERIFICA_MERCE], 
[SpRicezioneSpedizioniLight].[DDT_DATA] AS [DDT_DATA], 
[SpRicezioneSpedizioniLight].[DDT_NUMERO] AS [DDT_NUMERO], 
[SpRicezioneSpedizioniLight].[ID_STAMPANTE] AS [ID_STAMPANTE], 
[SpRicezioneSpedizioniLight].[CONSEGNA_TIPO_SERVIZIO] AS [CONSEGNA_TIPO_SERVIZIO], 
[SpRicezioneSpedizioniLight].[ORDINAMENTO] AS [ORDINAMENTO], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_INTERLOCUTORE_TIPO] AS [DESTINATARIO_INTERLOCUTORE_TIPO], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_INTERLOCUTORE_NOMINATIVO] AS [DESTINATARIO_INTERLOCUTORE_NOMINATIVO], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_INTERLOCUTORE_E_MAIL] AS [DESTINATARIO_INTERLOCUTORE_E_MAIL], 
[SpRicezioneSpedizioniLight].[DESTINATARIO_INTERLOCUTORE_CELLULARE] AS [DESTINATARIO_INTERLOCUTORE_CELLULARE]
FROM [aud].[SpRicezioneSpedizioniLight] AS [SpRicezioneSpedizioniLight]) AS [Extent1]
    WHERE 'I' = [Extent1].[SPEDIZIONE_STATO_GENERAZIONE]

我不知道该怎么做。

0 个答案:

没有答案