Share via


Kullanıcı tanımlı işlev tasarım yönergeleri

Kullanıcı tanımlı bir işlev, bu şekilde kullanıldığında, yeniden kullanılabilir kod sağlayan bir veritabanı nesnesi olarak saklanır:

  • De Transact-SQL gibi deyimleri seçin

  • Uygulamalarda çağırmaişlev

  • Başka bir kullanıcı tarafından tanımlanan işlev tanımında

  • Stratejisinin bir görünüm veya dizinli görünüm işlevselliğini geliştirmek için

  • Bir sütun tanımlamak için birtablo

  • Üzerinde denetim kısıtlamasını tanımlamak için birsütun

  • Saklı yordam değiştirmek için

İşlev türünü seçme

Öncelikle kullanıcı tanımlı bir işlev tasarlarken, gereksinimlerinize en uygun işlev türünü belirleyin.Olur işlev:

  • Bir skaler (skaler değer) dönmek

  • Bir tablo (birden çok satır) dönmek

  • Karmaşık bir hesaplama gerçekleştirme

  • Öncelikle erişim SQL Server veri

Kullanıcı tanımlı işlevler ya da yazılı Transact-SQL veya .NET Framework dönüş her iki skaler ve tablo değerleri.

İşlevler, Özellikler

Çeşitli özelliklerini belirleme yeteneği kullanıcı tanımlı işlevler vardır SQL Server Veritabanı Altyapısı Dizin sonuçlar işlevini çağırır hesaplanmış sütunları dizinlerde, veya aracılığıyla başvuran işlevi. Dizin oluşturulmuş görünümler işlevinBu özellikler ayrıca yöntemleri için uygun CLR User-Defined türleri.

Determinism

Deterministic İşlevler, her saat belirli bir giriş değerleri küme olarak adlandırılır ve veritabanının aynı durumu her saat aynı sonucu döndürür.Belirleyici olmayan işlevler erişimleri veritabanı durumunu aynı kalsa da belirli bir giriş değerleri küme denir her saat farklı sonuçlar döndürebilir.

The Veritabanı Altyapısı automatically analyzes the body of Transact-SQL functions and evaluates whether the function is deterministic.Örneğin, diğer işlevler deterministic olmayan işlevini çağırırsa veya genişletilmiş saklı yordamlar işlevini çağırır, sonra Veritabanı Altyapısı işlev deterministic olmayan olarak işaretler.Ortak dil çalışma zamanı (clr) işlevleri için Veritabanı Altyapısı işlev deterministic veya değil kullanma olarak işaretlemek için yazar işlevinin esas SqlFunction özel öznitelik.

Precision

Kullanıcı tanımlı bir işlev, tüm kayan gidermez kesin kabul edilir işaret işlemleri.

The Veritabanı Altyapısı automatically analyzes the body of Transact-SQL functions and evaluates whether the function is precise.clr işlevler için Veritabanı Altyapısı işlev kesin veya değil kullanma olarak işaretlemek için işlevin Yazar esas SqlFunction özel öznitelik.

Veri erişimi

Bu özellik, yerel veritabanı sunucusu kullanarak işlev erişir olup olmadığını gösterir SQL Server işlem yönetilen sağlayıcı.Daha fazla bilgi için bkz: clr veritabanı nesnelerini Access'ten veri.

The Veritabanı Altyapısı automatically analyzes the body of Transact-SQL functions and evaluates whether the function performs data access.clr için işlevs, Veritabanı Altyapısı yazarı olarak dayanır işlev kullanarak veri erişim özelliklerini göstermek için Sqlişlev özel öznitelik.Bu özellik yürütme sırasında zorunlu saat tarafından Veritabanı Altyapısı.İşlev gösterir, Data Access = yok, ancak işlev başarısız yürütme sırasında veri erişimi gerçekleştiren saat.

Sistem veri erişimi

Bu özellik işlev yerel veritabanı sunucusu kullanarak sistem meta veriler erişir olup olmadığını gösterir SQL Server işlem yönetilen sağlayıcı.

The Veritabanı Altyapısı automatically analyzes the body of Transact-SQL functions and evaluates whether the function performs system data access.clr için işlevs, Veritabanı Altyapısı yazarı olarak dayanır işlev kullanarak sistem veri erişim özelliklerini göstermek için Sqlişlev özel öznitelik.Bu özellik yürütme sırasında zorunlu saat tarafından Veritabanı Altyapısı.İşlev gösterir, SystemDataAccess = yok, ancak sistem veri erişimi, yürütme sırasında işlev başarısız gerçekleştiren saat.

IsSystemVerified

Bu özellik işlev determinism ve precision özelliklerini tarafından doğrulanabilir gösterir Veritabanı Altyapısı.Bu özellik için doğru olan Transact-SQL sürece bunlar çağrılmayan işaretlenen hiçbir işlev görür IsSystemVerified = false.clr işlevler için yanlış özellik.

The Veritabanı Altyapısı automatically derives the IsSystemVerified property for functions.İçin Transact-SQL işlevleri, işaretlenmiş işlev erişimleri IsSystemVerified işlev olarak işaretlenmiş sonra = false, IsSystemVerified = false.

Dizinlenmiş Hesaplanmış sütunlarda ve dizin oluşturulmuş görünümler işlevleri hakkında daha fazla bilgi için bkz: Dizinler üzerinde hesaplanan sütunlar oluşturma, ve Dizin oluşturulmuş görünümler oluşturma.