Det regex som beskrivs i länk bör vara:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Observera att du generellt sett måste bädda in namnet på tabellen i [...]
, på grund av regel 3 (så SELECT * FROM [SET]
är en giltig fråga, eftersom, medan SET
är ett reserverat nyckelord kan du "escape" det med [...]
)
Observera att regeln på den länkade sidan är ofullständig:
Från https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- Identifieraren får inte vara ett reserverat Transact-SQL-ord. SQL Server reserverar både versaler och gemener av reserverade ord. När identifierare används i Transact-SQL-satser, måste identifierarna som inte följer dessa regler avgränsas med dubbla citattecken eller parenteser . Orden som är reserverade beror på databaskompatibilitetsnivån. Denna nivå kan ställas in med hjälp av ALTER DATABASE-satsen.
Och de glömde:https://msdn.microsoft.com/en-us /library/ms174979.aspx
Regeln som jag har skrivit är för "fullständiga" tabeller, inte för temporära tabeller, och inkluderar inte schemanamn.