Microsoft SQL Server 2005 ve yukarısını kullanarak, bir e-posta adresinin doğru olduğunu doğrulamak için hangi kodu kullanırım?
E-posta veri türü var mı?
E-posta kontrol kısıtlaması var mı?
E-posta kuralı var mı?
E-posta tetikleyicisi var mı?
E-posta doğrulama saklı yordamı var mı?Microsoft SQL Server e-posta doğrulaması
cevap
Genellikle CLR Stored Procedure kullanmıyorum, ancak bu iyi bir kullanımdır. CLR Depolanmış Prosedüründe .NET Regex'in kullanılması basittir ve ihtiyaçlarınızı karşılamak için mevcut birçok Regex modelinden birini kullanabilirsiniz (örneğin, these). Regular Expressions Make Pattern Matching And Data Extraction Easier
(bazı DBA en CLR özelliği etkinleştirdikten konuda çok sıkı) Bu gerçekleşmediği takdirde bakınız, belki de bu ilgi olabilir:
Working with email addresses in SQL Server
Güncelleme: yanıtta yorumlarda sorgulamaya A CLR stored procedure Visual Basic veya C# gibi Microsoft .NET Framework ortak dil çalışma zamanı (CLR) içinde oluşturulan bir derlemede programlanmış bir SQL Server örneğinin içinde bir veritabanı nesnesidir. SQL Server bir CLR saklı yordam oluşturma
aşağıdaki adımları içerir:
.NET Framework tarafından desteklenen bir dilde bir sınıfın statik yöntem olarak saklı yordam tanımlayın. için CLR saklı yordamları programlamayla ilgili daha fazla bilgi için bkz. CLR Kayıtlı Prosedürler. Daha sonra, sınıf derleme uygun Dil derleyici uygun bir Framework derleme oluşturmak derleyin.
Derleme SQL Server'da CREATE ASSEMBLY bildirimini kullanarak kaydedin. hakkında daha fazla bilgi için SQL Sunucusu'nda derlemeler ile çalışma hakkında bilgi için, bkz.
CREATE PROCEDURE deyimini kullanarak kayıtlı derlemeyi 'a başvuran saklı yordamını oluşturun. Ref.
Sen Regex sınıfını kullanarak yönetilen SP yazabilir Writing CLR Stored Procedures in C# - Introduction to C# (Part 1)
bakınız. RFC'ye göre e-posta doğrulama karmaşık bir şeydir. Sadece AD'yi kullanıcı varlığı için sorgularız.
Bu harici kullanıcılar AD değillerse ne olur? –
Katılıyorum. Asıl soru, bir e-posta adresini doğrulamak, bir kullanıcının Active Directory'de olduğunu doğrulamak değildi. –
@Mitch evet, _special_ case –
SQL Server'da e-posta adreslerini doğrulamak için yerleşik bir mekanizma yoktur. E-posta adresini doğrulayan çok sayıda normal ifade vardır (bazıları diğerlerinden çok daha uzun) örn. here, özellikle bakınız "Resmi Standart: RFC 2822" reg.
SQL Server, normal ifadeleri çalıştırmak için yerleşik bir destek sağlamamıştır, bu nedenle SQL'de gerçekten yapmak istiyorsanız, CLR işlevselliğini kullanmanız gerekir - örneğin, doğrulama işlemini gerçekleştiren bir .NET işlevi yazın. Daha sonra SQL'den çağrılabilir. Bununla birlikte, veritabanına gelmeden önce e-posta adresini daha önce doğrulayacağım.
'da çalışır durumda olduğundan emin olun. Doğrulamayı veritabanının mümkün olduğunca yakınına koymak istiyorum. Veritabanı düzeyinde zorlanmamış bir kural sadece bir öneridir. –
Söylediklerinizi duyuyorum ve tamamen katılmıyorum demiyorum ... ama, en azından * daha önce yapılmalı (yani, girişi doğrulayabilmeniz ve kötü verileri yakalayabilmeniz ne kadar erken olursa, kullanıcı bilgilendirilebilir == daha iyi kullanıcı deneyimi). Bu, veritabanı düzeyinde (SQL Server içinde çalışan .NET kodu) bunu başarmak için SQL CLR (Ortak Dil Çalışma Zamanı) kullanabileceğiniz klasik bir örnektir. – AdaTheDev
OLE otomasyon etkinse, kolayca Regexes işlemek için bir UDF oluşturmak ve sonra sadece o arayabilirsiniz: Benim RegExFind()
UDF için kod nereden
CASE WHEN dbo.RegExFind
(
'[email protected]',
'^[a-z0-9][a-z0-9._-]*@[a-z0-9][a-z0-9.-]*[a-z0-9]\.[a-z][a-z]+$',
1 -- Case-insensitive or not
) = 1 THEN 'OK' ELSE 'Not OK' END
Hatırlamıyorum, ama Kod, StackOverflow, here'da zaten var gibi görünüyor.
- 1. Microsoft SQL Server 2012
- 2. microsoft sql server 2008
- 3. Microsoft SQL Server Yayımlama
- 4. Microsoft SQL Server
- 5. Microsoft SQL Server'a Oracle SQL Developer bağlantısı
- 6. SQL Server Hatası 223 Bağlanıyor
- 7. Microsoft SQL Server Yönetimi'ni kullanarak bir TABLO çoğaltma
- 8. İstemci İstatistik tablosu (Microsoft SQL Server Management Studio)
- 9. microsoft sql server: kullanıcıların kendi izinlerini kontrol et
- 10. Microsoft SQL Server "Express" sürümleri üzerinde geliştirme yapmak serbest mi?
- 11. Microsoft SQL Server 2016 Release Candidate 0 (RC0) Kurulum
- 12. Sql Server 2005
- 13. SQL Server Express Edition
- 14. sql server 2008 ekspres/enterprise
- 15. Eposta çiftleşmiş
- 16. eposta hyperlinkbutton
- 17. SQL Server
- 18. Sql Server
- 19. [SQL Server]
- 20. SQL Server
- 21. SQL Server
- 22. SQL Server
- 23. SQL Server
- 24. SQL Server
- 25. SQL Server
- 26. SQL Server:
- 27. SQL Server
- 28. SQL Server
- 29. SQL Server JBDC Sürücü karşılaştırması
- 30. Bir Microsoft SQL sunucusu 2005 olması SQL Server Broker çok uzun süre
CLR Stored Procedure nedir? Bu saklı bir prosedür ile aynı mı? Kısaltma CLR beni şaşırttı. –
CLR, Ortak Dil Çalışma Zamanı - CLR Saklı Yordam (veya işlevi vb.) C# içinde bir yordam yazmanıza izin verir, ancak doğrudan T-SQL'den çağırır. – onupdatecascade