Regex beskrevet i link skal være:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Bemærk, at du generelt bliver nødt til at indlejre navnet på tabellen i [...]
, på grund af regel 3 (så SELECT * FROM [SET]
er en gyldig forespørgsel, fordi, mens SET
er et reserveret nøgleord, kan du "undgå" det med [...]
)
Bemærk, at reglen på den linkede side er ufuldstændig:
Fra https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- Id'et må ikke være et Transact-SQL-reserveret ord. SQL Server reserverer både store og små bogstaver af reserverede ord. Når identifikatorer bruges i Transact-SQL-sætninger, skal de identifikatorer, der ikke overholder disse regler, være afgrænset af dobbelte anførselstegn eller parenteser . De ord, der er reserveret, afhænger af databasekompatibilitetsniveauet. Dette niveau kan indstilles ved at bruge ALTER DATABASE-sætningen.
Og de glemte:https://msdn.microsoft.com/en-us /library/ms174979.aspx
Reglen, som jeg har skrevet, er for "fulde" tabeller, ikke for midlertidige tabeller, og inkluderer ikke skemanavn.