La regex descritta in link dovrebbe essere:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Nota che in generale dovrai incorporare il nome della tabella in [...]
, a causa della regola 3 (quindi SELECT * FROM [SET]
è una query valida, perché, mentre SET
è una parola chiave riservata, puoi "scapparla" con il [...]
)
Nota che nella pagina collegata la regola è incompleta:
Da https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- L'identificatore non deve essere una parola riservata Transact-SQL. SQL Server riserva le versioni maiuscole e minuscole delle parole riservate. Quando gli identificatori vengono utilizzati nelle istruzioni Transact-SQL, gli identificatori che non rispettano queste regole devono essere delimitati da virgolette o parentesi quadre . Le parole riservate dipendono dal livello di compatibilità del database. Questo livello può essere impostato utilizzando l'istruzione ALTER DATABASE.
E hanno dimenticato:https://msdn.microsoft.com/en-us /libreria/ms174979.aspx
La regola che ho scritto è per le tabelle "complete", non per le tabelle temporanee e non include il nome dello schema.