Aracılığıyla paylaş


fn_validate_plan_guide (Transact-SQL)

Belirtilen plan kılavuzugeçerliliğini doğrular.sys.fn_validate_plan_guideişlev plan kılavuzu , sorguya uygulandığında oluşan ilk hata iletisi döndürür. plan kılavuzu geçerli olduğunda boş bir satır kümesi döndürülür.Fiziksel veritabanı tasarım için değişiklikler yapıldıktan sonra planı kılavuzları geçersiz hale gelebilir.Belirli bir dizin ve bu dizinin sonradan bırakılan plan kılavuzu belirtir, örneğin, sorgu artık plan kılavuzukullanabilmek için olacaktır.

plan kılavuzudoğrulayarak, Rehber yapılmaksızın en iyi duruma getiricisi tarafından kullanılıp kullanılamayacağını belirleyebilirsiniz.sonuçlar işlevtemel, plan kılavuzu bırakma ve sorgu retune veya plan kılavuzu' nda belirtilen dizin yeniden oluşturmayı, veritabanı tasarımını değiştirmek karar verebilirsiniz.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

sys.fn_validate_plan_guide ( plan_guide_id )

Bağımsız değişkenler

  • plan_guide_id
    plan kılavuzu olarak bildirilen kimliğidir sys.plan_guides Katalog görünümü.plan_guide_idİş intile hiçbir varsayılan.

Dönen Tablo

Sütun adı

Veri türü

Açıklama

msgnum

int

Hata iletisi kimliği.

severity

tinyint

1 İle 25 arasında ileti önem düzey .

state

smallint

Kodda hata oluştuğu noktayı belirten hata durum numarası.

message

nvarchar(2048)

Hata iletisi metni.

İzinler

Nesne kapsamlı plan kılavuzları, başvurulan bir nesne üzerinde görünüm TANIMI veya alter izni ve sorguyu veya plan kılavuzu' nda sağlanan toplu iş derlemek için izinleri gerektirir.Örneğin, bir toplu iş select deyimlerinin içeriyorsa, başvurulan nesneler üzerinde select izinleri gereklidir.

SQL- veya şablon kapsamlı plan kılavuzları veritabanı üzerinde alter iznine ve sorguyu veya plan kılavuzu' nda sağlanan toplu iş derlemek için izinleri gerektirir.Örneğin, bir toplu iş select deyimlerinin içeriyorsa, başvurulan nesneler üzerinde select izinleri gereklidir.

Örnekler

A.Bir veritabanındaki tüm planı kılavuzları doğrulanıyor

Aşağıdaki örnek, geçerli veritabanındaki tüm planı kılavuzları geçerliliğini denetler.Bir boş sonuç kümesi döndürülürse, tüm planı kılavuzları geçerlidir.

USE AdventureWorks2008R2;
GO
SELECT plan_guide_id, msgnum, severity, state, message
FROM sys.plan_guides
CROSS APPLY fn_validate_plan_guide(plan_guide_id);
GO

B.Veritabanında değişiklik uygulama önce plan kılavuzu doğrulama sınama

Aşağıdaki örnek, dizin bırakmak için bir belirtik işlem kullanır.sys.fn_validate_plan_guideişlev geçersiz olup bu eylem hale veritabanında tüm planı kılavuzları belirleme yürütüldüğünde sonuçlar işlevtemel DROP INDEXdeyim , ya da kabul edilen veya işlem geri alınır ve dizin düşürülmedi.

USE AdventureWorks2008R2;
GO
BEGIN TRANSACTION;
DROP INDEX IX_SalesOrderHeader_CustomerID ON Sales.SalesOrderHeader;
-- Check for invalid plan guides.
IF EXISTS (SELECT plan_guide_id, msgnum, severity, state, message
           FROM sys.plan_guides
           CROSS APPLY sys.fn_validate_plan_guide(plan_guide_id))
    ROLLBACK TRANSACTION;
ELSE
    COMMIT TRANSACTION;
GO