La expresión regular descrita en enlace debería ser:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Tenga en cuenta que, en general, deberá incrustar el nombre de la tabla en [...]
, debido a la regla 3 (entonces SELECT * FROM [SET]
es una consulta válida, porque, mientras SET
es una palabra clave reservada, puede "escaparla" con [...]
)
Tenga en cuenta que en la página vinculada la regla está incompleta:
Desde https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- El identificador no debe ser una palabra reservada de Transact-SQL. SQL Server reserva las versiones en mayúsculas y minúsculas de las palabras reservadas. Cuando se utilicen identificadores en sentencias Transact-SQL, los identificadores que no cumplan con estas reglas deberán estar delimitados por comillas dobles o corchetes . Las palabras que están reservadas dependen del nivel de compatibilidad de la base de datos. Este nivel se puede establecer mediante la instrucción ALTER DATABASE.
Y se olvidaron:https://msdn.microsoft.com/en-us /library/ms174979.aspx
La regla que he escrito es para tablas "completas", no para tablas temporales, y no incluye el nombre del esquema.