cadre session pour soutenir les vues indexées
-
27-10-2019 - |
Question
J'utilise des vues indexées dans ma base de données. Ainsi, le client doit avoir un paramètre de connexion de session pour les appeler. J'utilise ado.net connexion, commande pour appeler des procédures stockées. Chaque fois que je dois appeler une procédure stockée je crée la connexion (je l'espère pool de connexion me permet de le faire rapidement) et exécuter une commande pour appliquer ces paramètres à la connexion en cours.
// 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();
}
Autre pensée: ajout de ces paramètres avant chaque appel de procédure stockée:
command.CommandText = 'SET....';
command.CommandText += ' EXEC MyStroredProc @...';
Cette solution provoque des problèmes de performance, est-ce pas?
Comment puis-je éviter tout travail supplémentaire si si je dois créer une nouvelle connexion à chaque fois? Comment appliquer ces paramètres automatiquement?
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
La solution
Selon la rel="noreferrer">, vous pouvez définir ces paramètres sur la base de données niveau:
Paramètres de base de données définis à l'aide ALTER DATABASE sont valables uniquement au niveau de la base de données et l'effet prendre que si explicitement défini. Base de données de paramètres d'option d'instance de remplacement qui sont définies en utilisant sp_configure.
Avez-vous essayé cela?
Malheureusement, ces propriétés ne peut pas être dans la chaîne de connexion, utilisez donc ce sql:
ALTER DATABASE dbname SET ANSI_NULLS ON
-- etc