Wyrażenie regularne opisane w link powinno być:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Zauważ, że generalnie będziesz musiał osadzić nazwę tabeli w [...]
, ze względu na regułę 3 (więc SELECT * FROM [SET]
jest prawidłowym zapytaniem, ponieważ podczas gdy SET
jest zastrzeżonym słowem kluczowym, możesz "ominąć" je za pomocą [...]
)
Zwróć uwagę, że na stronie, do której prowadzi link, reguła jest niekompletna:
Od https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- Identyfikator nie może być słowem zastrzeżonym języka Transact-SQL. SQL Server rezerwuje zarówno wielkie, jak i małe wersje słów zastrzeżonych. Gdy identyfikatory są używane w instrukcjach języka Transact-SQL, identyfikatory, które nie są zgodne z tymi regułami, muszą być oddzielone podwójnymi cudzysłowami lub nawiasami . Zarezerwowane słowa zależą od poziomu zgodności bazy danych. Ten poziom można ustawić za pomocą instrukcji ALTER DATABASE.
I zapomnieli:https://msdn.microsoft.com/en-us /biblioteka/ms174979.aspx
Reguła, którą napisałem, dotyczy „pełnych” tabel, a nie tabel tymczasowych i nie zawiera nazwy schematu.