Come posso ridurre il tipo di attesa OLEDB in una connessione server collegata SSAS?
-
29-09-2020 - |
Domanda
Ho recentemente creato un server collegato a uno dei miei server SSAS.
Quando vado avanti e apro i cataloghi, per vedere quali database SSAS ho lì, Io uso la seguente procedura:
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
.
Ecco come lo chiamo:
sys.sp_catalogs 'sasbidev01'
.
Quando vedo che ci vuole troppo a lungo, controllo cosa è in esecuzione:
Vedo il tipo di attesa OLEDB.
è da solo, indicazione che potrei fare qualcosa per migliorare la velocità di questa connessione?
La creazione di script server collegata:
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
. Soluzione
the GeneracodictagCode Type di attesa è ciò che SQL Server utilizza per segnalare la quantità diTempo che sta aspettando una risposta dal codice in esecuzione al di fuori del controllo di SQL Server tramite un provider OLEDB.In genere, questo è da un server collegato e nel tuo particolare esempio è la quantità di tempo SQL Server in attesa di SSA per fornire la sua risposta a tale query.
Non c'è nulla che tu possa fare a SQL Server per accelerare questa query.È necessario garantire che SSAS abbia la memoria dedicata necessaria per assicurarsi che non venga mai effettuata la memoria del file di paging. Questa pagina Microsoft Docs potrebbe essere utile.