私は英語ではない言語用のシステムを開発しています。SQL Serverのテーブルまたは列名に非標準の英語文字を使用できますか?
場合によっては、表や列の名前に標準以外の英字(ç、ã、é...など)を使用できます。
これらの文字をMicrosoft SQL Serverで問題なく使用できますか?
私はSQL Serverがこれらの文字を受け入れることを知っています。私はこれがサーバーの構成や何かによって何らかの問題を引き起こす可能性があるのだろうかと思っています。
私は英語ではない言語用のシステムを開発しています。SQL Serverのテーブルまたは列名に非標準の英語文字を使用できますか?
場合によっては、表や列の名前に標準以外の英字(ç、ã、é...など)を使用できます。
これらの文字をMicrosoft SQL Serverで問題なく使用できますか?
私はSQL Serverがこれらの文字を受け入れることを知っています。私はこれがサーバーの構成や何かによって何らかの問題を引き起こす可能性があるのだろうかと思っています。
はいできます。ただし、ベストプラクティスはRules for Regular Identifiersに準拠することです:
最初の文字は、次のいずれかである必要がありますUnicode標準3.2で定義されているよう
◦Aの手紙。 Unicode 文字の定義には、a〜zのラテン文字、 A〜Z、および他の言語の文字も含まれます。
◦アンダースコア(_)、アットマーク(@)、または数字記号(#)。
識別子の先頭にある特定の記号は、SQL Serverで特別な意味を持つ です。アットマークで始まる通常の識別子 は、常にローカル変数またはパラメータを表し、他のタイプのオブジェクトの名前として使用することはできません。 の番号記号で始まる識別子は、一時表またはプロシージャーを示します。 が二重番号記号(##)で始まる識別子は、グローバルな一時的な オブジェクトを示します。他の種類のオブジェクトの名前を開始するには、数字記号または二重番号記号の文字は ですが、 ではこの方法をお勧めしません。
一部のTransact-SQL関数の名前は、 (@@)の二重で始まる名前です。これらの関数との混乱を避けるために、@@で始まる名前を に使用しないでください。 Unicode規格3.2で定義されるよう
◦Letters:
2.Subsequent文字は、以下を含むことができます。
◦基本的なラテン文字またはその他の国別スクリプトの桁数。
◦アットマーク、ドル記号($)、数字記号、またはアンダースコア。
3.識別子はTransact-SQL予約語であってはなりません。 SQL Serverは予約語の大文字と小文字の両方のバージョンを予約します。 Transact-SQLステートメントで識別子を使用する場合、これらの規則に準拠していない識別子 は、二重引用符または角括弧 で区切る必要があります。予約語は データベースの互換性レベルによって異なります。このレベルは、ALTER DATABASEステートメントを使用して設定できます。
4.埋め込みスペースまたは特殊文字は使用できません。
5.補助文字は使用できません。
'Transact-SQLステートメントで識別子を使用する場合、これらのルールに準拠していない識別子は二重引用符で区切る必要があります。ブラケット - 私はこれがそうでないときでも、それを冗長に使っている人々を見ました。プロダクションDDLとDMLスクリプトは大括弧で囲まれています。ほとんどの人は、SQL Server Management Studio(SSMS)もすべてのSQLオブジェクトの周りに '[]'を使ってすべてのスクリプトを生成するので、これがすべての状況で良い方法だと思っています。 SSMSはまさに予防措置としてそうしていますが、人々はそれが良いコーディング慣行または大会であると考えていました。 – RBT
SQL Serverと.NETは通常、Unicode文字で動作するため、英語以外のアクセント付き文字には問題はありませんが、膨大な数の問題が発生しています。 Gitに切り替えると、私たちは(私たちがそれを使い始めた頃から)7ビットで十分だったので、苦労しました。または、7ビットのASCII文字以外のものをサポートしていないビルドサーバーやツールで問題が発生しました。したがって、短く:はい、*できます* - それでも...ないでください。 –