Pertanyaan 1: Bagaimana 8000 karakter berperan dan di mana saya harus menyadarinya?
Pengaturan n hingga 8000 menyebabkan 8000 karakter ikut bermain. Anda perlu mengetahui referensi Presisi, Skala, dan Panjang (Transact-SQL) tentang char, nchar, nvarchar, dan varchar. Sebaliknya, pengaturan n ke max (tanpa tanda kutip) menyebabkan SQL Server untuk menyimpan (dan mengembalikan) jumlah byte maksimum (seperti yang disebutkan dalam kutipan Anda).
Pertanyaan 2: apakah kueri datareader .net ke kolom ini akan selalu mengembalikan hasil lengkap dengan 100.000 karakter?
Ini adalah pertanyaan .Net (bukan SQL Server), tetapi datareader .Net mengambil aliran byte. Byte bukan karakter, dan SQL Server mengembalikan byte (bukan karakter). Jika n diatur ke 8000 dan tipe data adalah nvarchar, SQL Server mengembalikan hingga 8000 byte, yang dapat ditafsirkan oleh .Net datareader menjadi 4000 karakter Unicode. Jika n diatur ke 8000 dan tipe data adalah varchar, SQL Server mengembalikan hingga 8000 byte, yang dapat ditafsirkan oleh .Net datareader hingga 8000 karakter ANSI. Jika n diatur ke maks dan tipe datanya adalah nvarchar, SQL Server mengembalikan hingga 2 ^ 31-1 byte, yang dapat ditafsirkan oleh datareader .Net hingga (2 ^ 31-1) / 2 karakter. Jika n diatur ke max dan tipe data adalah varchar, SQL Server mengembalikan hingga 2 ^ 31-1 byte, yang dapat ditafsirkan oleh datareader .Net hingga 2 ^ 31-1 karakter ANSI.
Jika Anda memilih menggunakan char atau varchar (bukan nchar atau nvarchar) karena mereka dapat menyimpan lebih banyak "karakter" (lebih akurat: byte), Anda harus menyadari bahwa banyak karakter Unicode tidak memiliki karakter ANSI yang setara (dengan demikian sebagian besar dari kami pengguna dunia tidak akan dapat melihat karakter lokal / asli mereka di aplikasi Anda).
varchar(max)
pernah dipanggiltext
dan diperlakukan sebagai tipe data yang berbeda.