Aracılığıyla paylaş


sys.fn_validate_plan_guide (Transact-SQL)

Belirtilen plan kılavuzu geçerliliğini doğrular.Diğer bir deyişle ilk hata iletisi sys.fn_validate_plan_guide işlevni verir, karşılaştı plan kılavuzu, sorguya uygulanır.Plan kılavuzu geçerli olduğunda boş bir satır kümesi verilir.Değişiklikler için fiziksel veritabanı tasarımını yapıldıktan sonra planı kılavuzları geçersiz hale gelebilir.Belirli bir dizin ve bu dizin sonradan bırakılan bir plan kılavuzu belirtir, örneğin, sorgu artık planı kılavuz kullanabilmek için olacaktır.

Bir plan kılavuzu doğrulayarak, kılavuz yapılmaksızın en iyi duruma getiricisi tarafından kullanılıp kullanılamayacağını belirleyebilirsiniz.Temel sonuçlar, işlevi, plan kılavuzu bırakın ve sorgu retune ya da veritabanı tasarımını, örneğin, planı kılavuzda belirtilen dizin yeniden oluşturma işlemi tarafından değiştirmek karar verebilirsiniz.

Topic link iconTransact-SQL sözdizimi kuralları

sys.fn_validate_plan_guide ( plan_guide_id )

Bağımsız değişkenler

  • plan_guide_id
    Is the ID of the plan guide as reported in the sys.plan_guides catalog view.plan_guide_id is int with no default.

Dönen Tablo

Sütun adı

Veri türü

Açıklama

msgnum

int

Hata iletisinin KIMLIĞI.

önem derecesi

tinyint

1 Ile 25 arasında iletinin önem düzeyini.

durumu

smallint

Durum kodunda, hatanın oluştuğu noktayı gösteren hata sayısı.

ileti

nvarchar(2048)

Hata iletisi metni.

İzinler

Nesne kapsamı plan kılavuzu s başvurulan nesnenin GÖRÜNÜM TANıMıNı veya ALTER iznine ve sorgu veya sağlanan bir toplu iş derleme için izinleri gerektiren plan kılavuzu.Örneğin, bir toplu iş SELECT deyimi içerir, SELECT başvurulan nesne izinleri gereklidir.

SQL veya TEMPLATE kapsamlı plan kılavuzu s ALTER veritabanı iznine ve sorgu veya sağlanan bir toplu iş derleme için izinleri gerektiren plan kılavuzu.Örneğin, bir toplu iş SELECT deyimi içerir, SELECT başvurulan nesne izinleri gereklidir.

Örnekler

C.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 AdventureWorks;
GO
SELECT plan_guide_id, msgnum, severity, state, message
FROM sys.plan_guides
CROSS APPLY fn_validate_plan_guide(plan_guide_id);
GO

b.Önce veritabanına bir değişiklik uygulama planı kılavuz doğrulama sınama

Aşağıdaki örnek, bir dizini silmek için belirtik işlem kullanır.The sys.fn_validate_plan_guide işlev is executed to determine whether this eylem will invalidate any plan guides in the database. Üzerinde sonuçlarını temel alan işlev, DROP INDEX ya da tamamlanmış veya işlem geri alınır ve dizin değil bırakılan deyim.

USE AdventureWorks;
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