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.
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
See Also