[SQL Server] nvarchar と varchar

nvarchar と varchar の使い分けしていますか?
もしくは、nchar と char の使い分けしていますか?

nchar および nvarchar は Unicode 文字列データを扱う UNICODE UCS-2 文字セットを使用する文字データ型です。
char および varchar は Unicode ではない固定長の文字列データを扱う文字データ型です。

nvarcharとvarcharの違い

上の説明だとわかったような、わからないような気がしますか?

ざっくり言うと nvarchar と varchar の違いは Unicode か Shift_JIS かっていうことですよね。全角2バイト、半角1バイトとかって言う古い概念が varchar で、文字は文字数だけっていうのが nvarchar で、その辺りの違いとも言えます。

特殊な環境で稼働させている場合を除いて、SQL Serverを使っている人は、おおよそOSにWindowsを使っていると思います。Windows自体は現在はJIS X 203(JIS2004)を使っていますが、その土台を支えるFrameworkはUnicode UTF-16 (Unicode Transformation Format、16 ビット エンコーディング形式) を使用しています。
どちらが親和性が高いかと言えば、Unicode かな、、、実際はどっちなんでしょうね?
nvarchar と varchar の変換は内部で自動で行ってくれるので、プログラマ的にはバイナリ―で比較するとかしない限りは無視しても問題ないレベルだと思うし。でも型を曖昧にした変なプログラムを書いちゃダメですけどね。。。

nvarchar と varcharどちらを使う?

じゃ、実際データベースの設計をする時どちらを使う?ってなると、悩むというか、どちらでも良いというか。。。
私はとりあえず最近の設計は全て nvarchar にしてます。文字数を数える時に全角2バイトとか半角1バイトって変換しなくて済むし。
でも、限られたスペースでギリギリに表示を考えている場合は半角なら何文字とか数える人が居ますよね?そういう人が設計に入ってくると文字数を数えて表示幅がどんだけだから。。。ってプログラムで分岐しますよね。そういう人が居るなら数えるのが便利な varcharかな。。。

歯切れがとても悪いのですが、結論はなんとなくnchar、nvarchar、ntextのUnicodeが扱える方が良いかな〜程度です。
明確な理由が無ければそうすると思います。
皆さんはどのように分けて使ってますか?