Regulární výraz popsaný v odkaz by mělo být:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Všimněte si, že obecně budete muset název tabulky vložit do [...]
, kvůli pravidlu 3 (takže SELECT * FROM [SET]
je platný dotaz, protože zatímco SET
je vyhrazené klíčové slovo, můžete jej "uniknout" pomocí [...]
)
Všimněte si, že na odkazované stránce je pravidlo neúplné:
Z https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- Identifikátor nesmí být vyhrazené slovo Transact-SQL. SQL Server rezervuje velká i malá verze vyhrazených slov. Když jsou v příkazech Transact-SQL použity identifikátory, identifikátory, které nesplňují tato pravidla, musí být odděleny dvojitými uvozovkami nebo hranatými závorkami . Slova, která jsou vyhrazena, závisí na úrovni kompatibility databáze. Tuto úroveň lze nastavit pomocí příkazu ALTER DATABASE.
A zapomněli:https://msdn.microsoft.com/en-us /library/ms174979.aspx
Pravidlo, které jsem napsal, je pro "úplné" tabulky, nikoli pro dočasné tabulky, a nezahrnuje název schématu.