2013-08-31 56 views
8

Tôi đang sử dụng lệnh sau để thực thi sqlpackage để xuất một bacpac cho một db cục bộ.Xuất SqlDatabase sang Bacpac bằng SqlPackage.exe không thành công trên fillfactor

"C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin \ sqlpackage.exe"/hành động: Xuất /tf:".\dbname_Baseline.bacpac"/ SourceConnectionString: "XXXXXXXXXXXX"

Không nói "Khóa chính yếu tố: [dbo]. [PK_Name] có thuộc tính không được hỗ trợ FillFactor được đặt và không được hỗ trợ khi được sử dụng như một phần của gói dữ liệu".

Tôi hiểu rằng máy điền không được hỗ trợ nhưng có bất kỳ điều gì để làm cho nó bỏ qua các thuộc tính không được hỗ trợ không?

Cảm ơn

Đánh dấu

+0

Thử cập nhật các gói DacFx và SMO từ [nuget] (https://www.nuget.org/packages) hoặc cài đặt [SSMS] mới nhất (https://msdn.microsoft.com/en-us/library /mt238290.aspx). Điều đó sẽ cập nhật dll cần thiết cho I/E trong GAC của bạn. – Pio

Trả lời

1

Vượt qua switch

/p:IgnoreFillFactor ={ True | False } 
+1

Xin chào, tôi nhận được 'IgnoreFillFactor' không phải là đối số hợp lệ cho hành động 'Xuất'. khi tôi cố gắng đặt đối số này vào dòng lệnh của mình. –

+0

Điều này giống như một tham số cho/action: Xuất bản thay vì/action: Export. (nhận được một db sẵn sàng cho sql azure là niềm vui phải không?) –

1

Tôi đã được thử nghiệm với xuất khẩu sang bacpac cho một cơ sở dữ liệu nhỏ khoảng 1GB và bạn có thể cấu hình lại fillfactor trong cơ sở dữ liệu. Trong SQL Server Manager Studio, chỉ cần kịch bản 'thả và tạo lại' cho chỉ mục, chỉnh sửa tập lệnh được tạo để loại bỏ đặc tả fillfactor, chạy tập lệnh và điều này tạo lại chỉ mục với hệ số lấp đầy mặc định được chấp nhận cho sqlpackage.exe . Điều này sẽ làm việc cho các PK cũng như các chỉ mục, nó sẽ nhanh chóng cho các cơ sở dữ liệu nhỏ và sẽ không có ảnh hưởng xấu đến cơ sở dữ liệu.

Tôi nhận thấy điều này không trả lời câu hỏi về việc làm cho sqlpackage.exe bỏ qua một số lỗi, nhưng có lẽ đây là cách tốt hơn để khắc phục vấn đề vì nó thực hiện trực tiếp trong cơ sở dữ liệu.

+0

Đây là một giải pháp hợp lệ cho cơ sở dữ liệu nhỏ. Tuy nhiên, chúng tôi có một cơ sở dữ liệu lớn với 270+ chỉ mục vấn đề! Phải có một giải pháp tốt hơn cho việc này! –

+0

Để mở rộng câu trả lời của tôi, bạn cũng có thể thay đổi trình điền bằng cách sử dụng lệnh ALTER INDEX REBUILD, bạn không phải sử dụng SQL Server Manager Studio GUI. Bạn có thể viết một kịch bản để xây dựng lại các chỉ mục từng cái một với các yếu tố điền cần thiết, và bạn có thể chạy các thay đổi trong một khoảng thời gian. Khi một chỉ mục được xây dựng lại với trình điền đầy đủ yêu cầu, nó không cần phải được xây dựng lại. Ngoài ra tôi tin rằng phiên bản SQL Server Enterprise cho phép ALTER INDEX REBUILD xuất hiện trực tuyến, điều này sẽ làm giảm thời gian chết. – Ubercoder