Regex yang dijelaskan dalam tautan seharusnya:
var regex = new Regex(@"^[\p{L}_][\p{L}\p{N}@$#_]{0,127}$");
Perhatikan bahwa secara umum Anda harus menyematkan nama tabel di [...]
, karena aturan 3 (jadi SELECT * FROM [SET]
adalah kueri yang valid, karena, sementara SET
adalah kata kunci yang dicadangkan, Anda dapat "melarikannya" dengan [...]
)
Perhatikan bahwa di halaman tertaut, aturannya tidak lengkap:
Dari https://msdn.microsoft.com/en-us/library/ ms175874.aspx
- Pengidentifikasi tidak boleh berupa kata yang dicadangkan Transact-SQL. SQL Server mencadangkan versi huruf besar dan huruf kecil dari kata-kata yang dicadangkan. Saat pengidentifikasi digunakan dalam pernyataan Transact-SQL, pengidentifikasi yang tidak mematuhi aturan ini harus dipisahkan dengan tanda kutip ganda atau tanda kurung . Kata-kata yang dicadangkan bergantung pada tingkat kompatibilitas database. Level ini dapat diatur dengan menggunakan pernyataan ALTER DATABASE.
Dan mereka lupa:https://msdn.microsoft.com/en-us /library/ms174979.aspx
Aturan yang saya tulis adalah untuk tabel "penuh", bukan untuk tabel sementara, dan tidak menyertakan nama skema.