Utilizzando Microsoft SQL Server 2005 e versioni successive, quale codice devo utilizzare per verificare che un indirizzo e-mail sia corretto?
Esiste un tipo di dati email?
Esiste un vincolo di controllo della posta elettronica?
Esiste una regola di posta elettronica?
C'è un trigger di posta elettronica?
Esiste una procedura di convalida della convalida della posta elettronica?Convalida e-mail di Microsoft SQL Server
risposta
Di solito non si consiglia di utilizzare una procedura memorizzata CLR, ma questo è un buon uso di uno. Le funzionalità di gestione delle stringhe di SQL non sono eccezionali, mentre l'utilizzo di .NET Regex in una stored procedure CLR è semplice ed è possibile utilizzare uno dei numerosi schemi Regex esistenti per soddisfare le proprie esigenze (ad esempio uno dei these). Vedi Regular Expressions Make Pattern Matching And Data Extraction Easier
in mancanza di questo (alcuni DBA sono molto severe su come abilitare la funzione CLR), forse questo potrebbe essere di interesse:
Working with email addresses in SQL Server
Aggiornamento: in risposta alla domanda nei commenti: A CLR stored procedure è un oggetto di database all'interno di un'istanza di SQL Server programmato in un assembly creato in Common Language Runtime (CLR) di Microsoft .NET Framework, ad esempio Visual Basic o C#.
Creazione di una stored procedure CLR in SQL Server prevede le seguenti fasi:
Definire la stored procedure come un metodo statico di una classe in una lingua supportata da .NET Framework. Per ulteriori informazioni su come programmare le stored procedure CLR , vedere Procedure memorizzate CLR . Quindi, compila la classe su creando un assembly nel framework .NET utilizzando il compilatore di lingua appropriato.
Registrare l'assembly in SQL Server utilizzando l'istruzione CREATE ASSEMBLY . Per ulteriori informazioni su su come utilizzare gli assembly nel server SQL , vedere Assiemi.
creare la stored procedure che fa riferimento il gruppo registrato dalla utilizzando l'istruzione CREATE PROCEDURE. Ref.
Vedi Writing CLR Stored Procedures in C# - Introduction to C# (Part 1)
È possibile scrivere SP gestita utilizzando la classe Regex. la convalida dell'e-mail secondo RFC è complessa. Semplicemente interrogiamo AD per l'esistenza dell'utente.
cosa succede se questi sono utenti esterni non in AD? –
Sono d'accordo. La domanda iniziale era come convalidare un indirizzo email, non convalidare che un utente sia in Active Directory. –
@Mitch sì sicuro che funzioni nel nostro caso _special_ –
Non esiste un meccanismo integrato in SQL Server per la convalida degli indirizzi di posta elettronica.
Esistono numerose espressioni regolari attorno che convalidano un indirizzo di posta elettronica (alcuni sono molto più lunghi di altri) ad es. here, vedi in particolare "The Official Standard: RFC 2822" reg ex.
Ora, SQL Server non ha il supporto integrato per eseguire espressioni regolari, quindi se si vuole veramente farlo all'interno di SQL, è necessario utilizzare la funzionalità CLR, ad esempio scrivere una funzione .NET che esegue la convalida , che può quindi essere chiamato da SQL.
Tuttavia, mi piacerebbe convalidare l'indirizzo e-mail prima, prima che entri nel database.
Voglio mettere la convalida il più vicino possibile al livello del database. Una regola che non è applicata a livello di database è solo un suggerimento. –
Ho sentito cosa stai dicendo, e non sto dicendo che non sono completamente d'accordo ... ma, almeno dovrebbe * anche * essere fatto prima (cioè prima puoi convalidare l'input e catturare i dati cattivi, prima è il l'utente può essere avvisato == una migliore esperienza utente). Questo è un classico esempio di dove è possibile utilizzare SQL CLR (Common Language Runtime) per ottenere questo a livello di database (codice .NET in esecuzione all'interno di SQL Server) – AdaTheDev
Se l'automazione OLE è abilitato, è possibile creare facilmente una funzione definita dall'utente per gestire regex, e poi basta chiamare che:
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
non ricordo dove ho ottenuto il codice per il mio RegExFind()
UDF, ma sembra che il codice sia già presente su StackOverflow, here.
- 1. Email Convalida espressione normale
- 2. MySQL Convalida Email Records
- 3. "email" regola di convalida arresto anomalo server - Mongo con Sails.js
- 4. bash FreeTDS: esecuzione di query SQL in server Microsoft SQL
- 5. Connessione al server Microsoft SQL tramite Python
- 6. Come implementare LIMIT con Microsoft SQL Server?
- 7. PHP convalida email
- 8. Connessione Oracle SQL Developer a Microsoft SQL Server
- 9. Connessione a SQL Server 2008 utilizzando Microsoft Server Management Studio
- 10. Inserimento di Microsoft SQL Server dalla query di selezione
- 11. convalida email comprensione utilizzando JavaScript
- 12. Lettura di dati da Microsoft SQL Server in R
- 13. Le edizioni "Express" di Microsoft SQL Server sono gratuite?
- 14. Riga di scrittura della console Microsoft SQL Server 2005
- 15. Ottieni l'indirizzo email dell'account Microsoft Live
- 16. Metodi di convalida dell'indirizzo email (pulsante Iscriviti)
- 17. laravel 4 Email di convalida vincolo univoco
- 18. override jquery convalida la convalida dell'indirizzo email del plug-in
- 19. [Microsoft] [SQL Server Native Client 11.0] [SQL Server] Nome oggetto non valido
- 20. Connessione a Microsoft SQL Server tramite pyODBC su Ubuntu
- 21. Indice autoincrement per Microsoft SQL Server 2008 R2
- 22. Posso connettermi a un server Microsoft SQL con MySQL Workbench
- 23. Duplicare una tabella utilizzando Microsoft SQL Server Mangement
- 24. Zend Framework 2 Connessione DB Microsoft SQL Server 2008
- 25. Microsoft SQL Server: chi ha creato una stored procedure?
- 26. Alfabeto cirillico con Microsoft SQL Server Management Studio
- 27. Eliminare e ricreare i database in Microsoft SQL Server
- 28. SQL Server Convalida un proc memorizzato prima di eseguirlo?
- 29. Reset autoincrement in Microsoft SQL Server 2008 R2
- 30. Crystal Reports e Microsoft SQL Server Reporting Services
Che cos'è una procedura memorizzata CLR? È lo stesso di una stored procedure? L'acronimo CLR mi ha lasciato perplesso. –
CLR è Common Language Runtime: una stored procedure CLR (o funzione, ecc.) Consente di scrivere una procedura in C# ma di chiamarla direttamente da T-SQL. – onupdatecascade