01/10/2018, 17:00

Vấn đề sql server

Xin chào mọi người,

Hôm nay mình có tạo 1 table với hơn 200columns khi tạo thành công nhưng được nhận thông báo sau
“Warning: The table “XXX” has been created, but its maximum row size exceeds the allowed maximum of 8060 bytes. INSERT or UPDATE to this table will fail if the resulting row exceeds the size limit.”
Xin hỏi có bị vấn đề gì khi sử dụng không. Mình dùng sqlsv 2012

Xin cảm ơn mọi người.

vũ xuân quân viết 19:15 ngày 01/10/2018

mình không biết cách giải quyết, chỉ giải thích thôi.
bạn đụng tới max của database luôn rồi.
dẫn tới sẽ không lưu được data khi lưu vào bảng đó.

Hung viết 19:09 ngày 01/10/2018

SQL Server thông báo cho bạn tổng số bytes tối đa sau khi tính được từ tổng các bytes tối đa từ các column lớn hơn 8060. 8060 là tổng số bytes là 1 row có thể chứa được mà SQL Server vẫn đảm bảo performance.

Nếu table của bạn có column kiểu varchar thì row size lúc insert sẽ nhỏ hơn row size tối đa, nếu <= 8060 thì insert thành công. Ngược lại, nếu row size > 8060, bạn nhận được thông báo lỗi.

Ví dụ cho bạn dễ hình dung:

  • Bạn tạo 1 bảng VARCHAR_TABLE là table chỉ chứa các column kiểu varchar. VARCHAR_TABLE chứa 100 cột column kiểu varchar(100).
  • Mỗi column có số kí tự tối đa là 100 kí tự. Giả sử mỗi kí tự lưu trữ trong 1 bytes. Như vậy, mỗi column chứa tối đa 100 * 1 = 100 bytes.
  • Table VARCHAR_TABLE có 100 columns, nên mỗi row trong table chứa tối đa: 100 * 100 = 10,000 > 8060.
  • Do row size trong VARCHAR_TABLE lớn hơn 8060 nên SQL Server thông báo warning như trên.

Lúc insert, bạn chỉ nhập đúng có 20 kí tự cho từng column, vì vậy row size lúc insert như sau:

  • Mỗi column chỉ có 20 kí tự, column size = 20 * 1 = 20 bytes
  • Table có tổng cộng 100 columns, nên row size lúc insert = 20 * 100 = 2000 bytes < 8060.
  • Do row size nhỏ hơn 8060, câu lệnh insert thành công.

Trường hợp khác, nếu 40 columns nhập 70 kí tự, 60 columns còn lại nhập 100 kí tự.
row size sẽ là: (70 * 1) * 40 + (100 * 1) * 60 = 2800 + 6000 = 8800 > 8060
Lúc này insert không được và SQL Server báo lỗi.

Bài liên quan
0