The biggest concern is that nvarchar uses 2 bytes per character, whereas varchar uses 1. Thus, nvarchar(4000) uses the same amount of storage space as varchar(8000).
In addition to all of your character data needing twice as much storage space, this also means...
- You may have to use shorter
nvarchar columns to keep rows within the 8060 byte row limit/8000 byte character column limit.
- If you're using
nvarchar(max) columns, they will be pushed off-row sooner than varchar(max) would.
- You may have to use shorter
nvarchar columns to stay within the 900-byte index key limit (I don't know why you would want to use such a large index key, but you never know).
Besides that, working with nvarchar isn't much different, assuming your client software is built to handle Unicode. SQL Server will transparently upconvert a varchar to nvarchar, so you don't strictly need the N prefix for string literals unless you're using 2-byte (i.e. Unicode) characters in the literal. Be aware that casting nvarchar to varbinary yields different results than doing the same with varchar.
nvarcharuses twice the space thanvarchar- no, no difference. – marc_s Mar 6 at 20:11ncharandnvarchartake no more space thancharandvarchar, due to Unicode compression. – Paul White Mar 9 at 10:29