2016-09-21 1 views
0

J'ai une vue qui fonctionne très rapidement dans MSMS (MS Sql Server) mais fonctionne très lentement dans mon application web. Mon paramètre ARITHABORT dans la base de données est défini sur ON, mais je ne sais pas si cela se poursuit jusqu'à l'application Web.Comment utiliser ARITHABORT dans une vue?

Est-il possible de définir cela dans la vue elle-même? Je sais qu'il y a d'autres problèmes possibles dans la différence de vitesse entre le SSMS et l'application Web, mais je veux juste essayer (comme beaucoup d'autres personnes ayant le même problème disent que cela résout le problème). En passant, je ne suis pas un administrateur de base de données et je n'ai pas vraiment les droits d'accès. Tout ce que j'ai, c'est cette vue et le code pour le bit de l'application web sur laquelle je travaille.

Répondre

0

Ouais définitivement compagnon.

Voici un exemple de l'une des vues de notre entrepôt de données.

Vous pouvez définir tout ce que vous voulez dans la partie supérieure

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 


CREATE view [dbo].[vw_Dim_Date] 
as 

-- select * from dbo.vw_Dim_Date 

SELECT [Date_key] 
, Format([Full_date],'MMMMM yyyy')as Date_label1 
     ,[Full_date] 
     ,[Calendar_year] 
     ,[Calendar_quarter] 
     ,[Calendar_month] 
     ,[Year_of_contract]] 
    FROM [dbo].[Dim_Date] 
GO 

Donc, dans votre cas, vous pouvez simplement utiliser

SET ARITHABORT ON 

Create View [dbo].[view_Name] 
as ..... 

situé à seulement quand vous créez la vue alors faites juste une goutte et pour créer et d'ajouter cette ligne et vous serez bon pour aller: D

enter image description here

+0

'ANSI_NULLS' et' QUOTED_IDENTIFIER' sont deux paramètres spécifiquement capturés au moment de la création de l'objet. Je ne crois pas que d'autres paramètres reçoivent le même traitement. Ceci est étonnamment mal documenté. Je ne peux trouver un indice que dans la documentation ['QUOTED_IDENTIFIER'] (https://msdn.microsoft.com/fr-fr/library/ms174393.aspx) où il en discute dans le contexte des procédures stockées, mais je crois que c'est également applicable aux vues et fonctions. –

+0

Vous obtenez cependant un indice supplémentaire, si vous affichez [sys.sql_modules] (https://msdn.microsoft.com/fr-fr/library/ms175081.aspx) où vous remarquerez qu'il y a deux colonnes spécifiques liées à 'ANSI_NULLS' et' QUOTED_IDENTIFIER' et aucune autre option 'SET'. –

+0

intéressant alors, je pourrais avoir à demander à nos DBA sur le compte parce que c'était une option pour moi dans les SSMS. Ils ont peut-être modifié un paramètre quelque part. Ils ont fait des choses assez étranges – Merenix