Tôi đang thực hiện chèn hàng loạt với đối tượng ADO.NET 2.0 SqlBulkCopy từ phương thức C# vào cơ sở dữ liệu MS SQL 2005, sử dụng người dùng cơ sở dữ liệu với quyền hạn chế. Khi tôi cố gắng chạy chiến dịch, tôi nhận được thông báo lỗi:SqlBulkInsert - Làm thế nào để thiết lập kích hoạt cháy, kiểm tra ràng buộc?
Sao chép không thành công. Người dùng không có quyền số ALTER TABLE trên bảng 'theTable'. ALTER TABLE phép được yêu cầu trên bảng mục tiêu của một hoạt động sao chép số lượng lớn nếu bảng có trình kích hoạt hoặc kiểm tra trở ngại, nhưng
'FIRE_TRIGGERS'
hoặc'CHECK_CONSTRAINTS'
gợi ý số lượng lớn không quy định như tùy chọn với số lượng lớn bản sao lệnh.
Tôi đọc một số tài liệu và tạo ra các đối tượng sao chép số lượng lớn với các nhà xây dựng cho phép tôi xác định những thứ như:
SqlBulkCopy bc = new SqlBulkCopy(
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
SqlBulkCopyOptions.FireTriggers & SqlBulkCopyOptions.CheckConstraints);
Nhưng điều này không thay đổi bất cứ điều gì - Tôi nhận được thông báo lỗi tương tự như trước đây. Tôi đã thử không quan trọng với một số giá trị SqlBulkCopyOptions khác nhưng không may mắn. Tôi thực sự nghĩ rằng điều này sẽ khắc phục được vấn đề, tôi có thiếu gì đó không?
Tôi đã thử nghiệm quy trình sau khi cấp ALTER trên bảng cho người dùng của tôi và hoạt động đã thành công. Tuy nhiên đây không phải là một lựa chọn cho tình hình của tôi.
Cuộc gọi công bằng. Rất tiếc! – gbn
Tôi không biết các tùy chọn này đã tồn tại nhưng một số tìm kiếm sáng tạo đã đưa tôi đến đây. Giải quyết vấn đề của tôi với SqlBulkCopy vào một bảng với trình kích hoạt * mà không cần phải cung cấp quyền truy cập SQL ALTER TABLE của tôi! – madannes