Der in der link sollte sein:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Beachten Sie, dass Sie im Allgemeinen den Namen der Tabelle in [...]
einbetten müssen , wegen Regel 3 (also SELECT * FROM [SET]
ist eine gültige Abfrage, weil während SET
ein reserviertes Schlüsselwort ist, können Sie es mit [...]
"escapen". )
Beachten Sie, dass die Regel auf der verlinkten Seite unvollständig ist:
Von https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- Der Bezeichner darf kein reserviertes Transact-SQL-Wort sein. SQL Server reserviert sowohl die Großbuchstaben- als auch die Kleinbuchstabenversion reservierter Wörter. Wenn Bezeichner in Transact-SQL-Anweisungen verwendet werden, müssen die Bezeichner, die diesen Regeln nicht entsprechen, durch doppelte Anführungszeichen oder eckige Klammern getrennt werden . Die reservierten Wörter hängen vom Kompatibilitätsgrad der Datenbank ab. Diese Ebene kann mit der ALTER DATABASE-Anweisung festgelegt werden.
Und sie haben vergessen:https://msdn.microsoft.com/en-us /library/ms174979.aspx
Die Regel, die ich geschrieben habe, gilt für "vollständige" Tabellen, nicht für temporäre Tabellen, und enthält keinen Schemanamen.