Comment réduire le type d'attente OLEDB dans une connexion de serveur liée à SSAS?
-
29-09-2020 - |
Question
J'ai récemment créé un serveur lié à l'un de mes serveurs SSAS.
Lorsque je vais de l'avant et ouvrez les catalogues, pour voir les bases de données SSAS que j'ai là, J'utilise la procédure suivante:
create procedure sys.sp_catalogs
(
@server_name sysname
)
as
select
CATALOG_NAME = f_rc.CATALOG_NAME,
DESCRIPTION = convert (nvarchar(255), f_rc.DESCRIPTION)
from
sys.fn_remote_catalogs (@server_name, NULL) f_rc
order by CATALOG_NAME
Voici comment je l'appelle:
sys.sp_catalogs 'sasbidev01'
Quand je vois qu'il faut trop de temps, je vérifie ce qu'il va de courir:
Je vois le type d'attente OLEDB.
Est-ce seul, indique que je pouvais faire quelque chose pour améliorer la vitesse de cette connexion?
La création de script de serveur lié:
USE [master]
GO
IF NOT EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'SASBIDEV01')
BEGIN
EXEC master.dbo.sp_addlinkedserver
@server = N'SASBIDEV01'
, @srvproduct=N''
, @provider=N'MSOLAP'
, @datasrc=N'SASBIDEV01'
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'SASBIDEV01'
,@useself=N'False'
,@locallogin=NULL
,@rmtuser=N'mycompany.CO.UK\SASBIDEV01_SSAS'
,@rmtpassword='B4l4r4m4__sbidev01'
END
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'SASBIDEV01', @optname=N'remote proc transaction promotion', @optvalue=N'true'
GO
La solution
the OLEDB
type d'attente est ce que SQL Server utilise pour signaler le montant de la quantité deIl est temps d'attendre une réponse du code exécutant en dehors du contrôle de SQL Server via un fournisseur OLEDB.Typiquement, cela provient d'un serveur lié, et dans votre exemple particulier, la quantité de temps SQL Server attend que SSAS fournit sa réponse à cette requête.
Il n'y a rien que vous puissiez faire à SQL Server pour accélérer cette requête.Vous devez vous assurer que les SSA disposent de la mémoire dédiée requise pour s'assurer qu'elle ne sort jamais de la mémoire dans le fichier de pagination. Cette page Microsoft Docs pourrait être utile.