var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
プレ>一般に、テーブルの名前を
[...]
に埋め込む必要があることに注意してください 、ルール 3 のため (したがってSELECT * FROM [SET]
whileSET
であるため、有効なクエリです。[...]
で「エスケープ」できます。 )リンクされたページでは、ルールが不完全であることに注意してください:
https://msdn.microsoft.com/en-us/library/ からms175874.aspx
- 識別子は、Transact-SQL の予約語であってはなりません。 SQL Server では、予約語の大文字バージョンと小文字バージョンの両方が予約されています。 Transact-SQL ステートメントで識別子を使用する場合、これらの規則に準拠しない識別子は、二重引用符または角かっこで区切る必要があります .予約語は、データベースの互換性レベルによって異なります。このレベルは、ALTER DATABASE ステートメントを使用して設定できます。
そして彼らは次のことを忘れていました:https://msdn.microsoft.com/en-us /library/ms174979.aspx
私が作成したルールは、一時テーブルではなく「完全な」テーブル用であり、スキーマ名は含まれません。