Uzak sunuculara OLEDB çağrılarıyla ilgili bir sorun olabilir (bağlı sunucular ve SSIS yapılandırmaları OLEDB kullanır).
Bu, bir tasarım kusuru, SQL Server 2012 SP1'e kadar yamayı hatırlamadığım yerden uzak istatistiklerin sorguyu uzaktan optimize etmek için kullanılmasına izin vermediği noktaya kadar yamalanmamış Microsoft SQL Server hatasıdır.
Trafiği görmek için sorgudaki REMOTE sunucusundan da sp_WhoIsActive ( indirme / dokümanlar ) çalıştırmanız gerekir , ancak 2012 SP1 olmayan SQL Server, oturum açmada veri okuyucu olsa bile bazı nedenlerden dolayı uzak istatistiklerin kullanılmasına izin vermez uzak sunucudaki tüm tablolara erişim.
Microsoft çözümü, uzak çağrının sorgulanan uzak sunucu / tablolara SA veya ddladmin veya DBO erişimi olmasını sağlayan bağlı sunucu kimlik bilgisini vermektir.
Bunu, uzak taraftaki DB'lere veya SQL Server'lara yükseltilmiş izinlere izin vermeden çoğunlukla çözüm açısından şeffaf olan bazı kurulumlarımızda bu sorunu çözmek için kullandım. Temel olarak, uzak SQL Server DB üzerinde uzak oturum açma ddladmin rolünü vermeniz ve sonra yalnızca SELECT erişimine izin vermek istiyorsanız nesne düzeyi değişiklikleri için açık DENY izinleriyle bir rol oluşturmanız gerekir.
Aşağıda bunun için oluşturduğum özel DB sabit rolünün kopyası var, ancak test etmek ve onaylamak veya daha fazla artı okuma ve araştırma ayarlamak isteyebilir, ancak bazı durumlarda benim için şeffaf bir şekilde çözülmüş olabilir - önbellek işe yaramadan önce temizlenmelidir. bunu aklınızda bulundurun ve temizlendikten sonra, iki kez çalıştırın ve sonuçlar için hem yerel etkinliği hem de uzak etkinliği kontrol edin.
Bu yüzden, uzak DB'deki ddladmin rolünün kimlik bilgisine izin verin, uzak DB'deki diğer olağan izinlere izin verin, aynı sunucuda aşağıda listelediğim gibi özel DB rolünü oluşturursunuz ve daha sonra aynı kimlik bilgisini bu yeni özel düzeltmeye eklersiniz Açık reddedilen DB rolü, önbelleği temizler, çözülüp çözülmediğini görmek için önbelleği temizledikten sonra sorguyu iki veya daha fazla kez çalıştırın.
SQL Server 2012 SP1'in altında bir sürüm çalıştırıyorsanız ve bunu görüyorsanız ve uzak bir sorgu çalıştırıyorsanız, kullanıma veya uzaktan kumandaya izin vermediğinden, bu imleç getirmelerini görmenizin nedeni nedeniyle sorunuzu özellikle yanıtlamak için Bu kurulumdaki istatistikleri bir geçici çözüm olmadan (yukarıda listelendiği gibi), daha sonra sorgu en iyi sorgu planı için istatistikler kullanılarak optimize edilmediğinden ve kardinalite sorununa sahip olduğundan, yukarıda belirtilen Kin olarak satır satır işlem yapar.
/*
CREATE A NEW ROLE - Deny explicit DB object access for linked
server credentials that the DDLAdmin role gives which is needed
for DBCC SHOW_STATISTICS across linked servers
*/
-- Database specific
CREATE ROLE db_LinkedServer_Restriction
DENY ALTER ANY ASSEMBLY TO db_LinkedServer_Restriction
DENY ALTER ANY ASYMMETRIC KEY TO db_LinkedServer_Restriction
DENY ALTER ANY CERTIFICATE TO db_LinkedServer_Restriction
DENY ALTER ANY CONTRACT TO db_LinkedServer_Restriction
DENY ALTER ANY DATABASE DDL TRIGGER TO db_LinkedServer_Restriction
DENY ALTER ANY DATABASE EVENT NOTIFICATION TO db_LinkedServer_Restriction
DENY ALTER ANY DATASPACE TO db_LinkedServer_Restriction
DENY ALTER ANY FULLTEXT CATALOG TO db_LinkedServer_Restriction
DENY ALTER ANY MESSAGE TYPE TO db_LinkedServer_Restriction
DENY ALTER ANY REMOTE SERVICE BINDING TO db_LinkedServer_Restriction
DENY ALTER ANY ROUTE TO db_LinkedServer_Restriction
DENY ALTER ANY SCHEMA TO db_LinkedServer_Restriction
DENY ALTER ANY SERVICE TO db_LinkedServer_Restriction
DENY ALTER ANY SYMMETRIC KEY TO db_LinkedServer_Restriction
DENY CHECKPOINT TO db_LinkedServer_Restriction
DENY CREATE AGGREGATE TO db_LinkedServer_Restriction
DENY CREATE DEFAULT TO db_LinkedServer_Restriction
DENY CREATE FUNCTION TO db_LinkedServer_Restriction
DENY CREATE PROCEDURE TO db_LinkedServer_Restriction
DENY CREATE QUEUE TO db_LinkedServer_Restriction
DENY CREATE RULE TO db_LinkedServer_Restriction
DENY CREATE SYNONYM TO db_LinkedServer_Restriction
DENY CREATE TABLE TO db_LinkedServer_Restriction
DENY CREATE TYPE TO db_LinkedServer_Restriction
DENY CREATE VIEW TO db_LinkedServer_Restriction
DENY CREATE XML SCHEMA COLLECTION TO db_LinkedServer_Restriction
DENY REFERENCES TO db_LinkedServer_Restriction
GO