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.
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
Ayrıca bkz.