Domanda

Sto utilizzando viste indicizzate nel mio database.Quindi il client dovrebbe avere alcune impostazioni di connessione della sessione per chiamarli.Sto usando la connessione ado.net, comando per chiamare procedure memorizzate. Ogni volta che devo chiamare una stored procedure creo una connessione (spero che il pool di connessioni mi consenta di farlo rapidamente) ed eseguo un comando per applicare queste impostazioni alla connessione corrente.

// some code to create a new connection
 //...
 //... 

 if (connection.State != ConnectionState.Open)
 {
     connection.Open();
 }



    using (var cmd = connection.CreateCommand())
    {
        cmd.CommandType = CommandType.Text;
        cmd.CommandText =
                            @"
                    SET ANSI_NULLS ON
                    SET ANSI_PADDING ON
                    SET ANSI_WARNINGS ON
                    SET ARITHABORT ON
                    SET CONCAT_NULL_YIELDS_NULL ON
                    SET QUOTED_IDENTIFIER ON
                    SET NUMERIC_ROUNDABORT OFF";
        cmd.ExecuteNonQuery();
    }

Altro pensiero: aggiungere queste impostazioni prima di ogni chiamata alla procedura memorizzata:

command.CommandText = 'SET....';
command.CommandText += ' EXEC MyStroredProc @...'; 

Questa soluzione causa alcuni problemi di prestazioni, non è vero?

Come posso evitare di lavorare così tanto se devo creare ogni volta una nuova connessione?Come applicare queste impostazioni automaticamente?

<”SOLUTION:

ALTER DATABASE [MyDB] 
    SET 
    ANSI_NULLS ON,
    ANSI_PADDING ON,
    ANSI_WARNINGS ON,
    ARITHABORT ON,
    CONCAT_NULL_YIELDS_NULL ON,
    QUOTED_IDENTIFIER ON,
    NUMERIC_ROUNDABORT OFF

È stato utile?

Soluzione

Secondo la documentazione , puoi configurare queste impostazioni nel databaselivello:

Le impostazioni del database impostate utilizzando ALTER DATABASE sono valide solo a livello di database e hanno effetto solo se impostate in modo esplicito.Le impostazioni del database sovrascrivono le impostazioni delle opzioni dell'istanza impostate utilizzando sp_configure.

Hai provato?

Sfortunatamente, queste proprietà non possono essere impostate nella stringa di connessione, quindi usa questo sql:

ALTER DATABASE dbname SET ANSI_NULLS ON
-- etc
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top