Đây không phải là cách thực hiện T-SQL thẳng. Mặc dù nó tạo ra một giải pháp T-SQL thuần túy mà bạn có thể áp dụng cho DB của bạn.
Kết quả của bạn có thể thay đổi tùy thuộc vào DB của bạn ... Ví dụ referential integrity nghèo có thể làm điều này một chút phức tạp hơn ..
Ngoài này đi kèm với một DO AT từ chối trách nhiệm RỦI RO RIÊNG BẠN :-)
- Lấy DB bạn muốn di chuyển vào một dự án SSDT
http://msdn.microsoft.com/en-us/library/azure/jj156163.aspx http://blogs.msdn.com/b/ssdt/archive/2012/04/19/migrating-a-database-to-sql-azure-using-ssdt.aspx
Đây là một cách hay để di chuyển bất kỳ giản đồ nào sang Azure bất kể ...Đó là cách tốt hơn sau đó chỉ cần tạo một tập tin bacpac .. sửa chữa ... xuất khẩu ... sửa chữa .. vv ... Vì vậy, tôi sẽ khuyên bạn nên làm điều này bất cứ lúc nào bạn muốn di chuyển một DB để Azure
Đối với các bản sửa lỗi FILLFACTOR chỉ cần sử dụng một tìm và thay thế để loại bỏ tất cả các FILLFACTORS từ các tệp lược đồ được tạo ra ... May mắn thay DB tôi đã sử dụng có tất cả chúng được đặt thành 90 vì vậy khá dễ dàng để tìm kiếm và thay thế rộng (CTRL-SHIFT-F)) ... Nếu máy của bạn thay đổi thì bạn có thể sử dụng tính năng tìm kiếm của RegEx của Visual Studio để tìm tất cả các fillfactors và chỉ xóa chúng khỏi các chỉ mục.
Tôi không phải là tuyệt vời tại RegEx nhưng tôi nghĩ việc này
WITH \((.)*FILLFACTOR(.)*\)
Tại thời điểm này, bạn sẽ phải sửa chữa bất kỳ trường hợp ngoại lệ thêm khoảng Azure tuân thủ .. Các liên kết được cung cấp mô tả làm thế nào để đi về làm việc này
- Bây giờ bạn đang ở thời điểm bạn có dự án SSDT phù hợp với AZURE SQL.
Ở đây có DO SỰ MẠO HIỂM CỦA BẠN PHẦN RIÊNG
tôi đã sử dụng các kịch bản để loại bỏ tất cả FK, PK, và hạn chế độc đáo từ DB.
while(exists(select 1 from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE IN ('FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE')))
begin
declare @sql nvarchar(2000)
SELECT TOP 1 @sql=('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME
+ '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']')
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE IN ('FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE')
exec (@sql)
end
declare @qry nvarchar(max);
select @qry =
(SELECT 'DROP INDEX [' + ix.name + '] ON [' + OBJECT_NAME(ID) + ']; '
FROM sysindexes ix
WHERE ix.Name IS NOT null and ix.OrigFillFactor <> 0
for xml path(''));
exec sp_executesql @qry
Tôi làm điều này vì AFAIK cách duy nhất để loại bỏ hoàn toàn tùy chọn yếu tố điền là thả và tạo lại chỉ mục. Điều này đi kèm với một loạt các vấn đề: -/PK với các yếu tố điền cần của FK giảm vv .... Có lẽ một cách thông minh hơn để làm điều này, do đó bạn không loại bỏ tất cả FK và PK và bạn nhìn vào cây phụ thuộc. ..
Bây giờ quay trở lại dự án Azure Compliant SSDT của bạn và thực hiện một SCHEMA COMPARISON của dự án đó với DB của bạn ... Điều này sẽ tạo một kịch bản tạo lại tất cả các FK của bạn, PK's, và Unique Constraints (không có Fill Factor) .... Tại thời điểm này bạn có thể chỉ cần nhấp vào "update" hoặc bạn có thể nhấp vào nút chỉ bên phải của bản cập nhật sẽ tạo ra kịch bản bạn có thể sử dụng ... Vì vậy, bây giờ được trang bị
- tập lệnh ở trên để xóa FK, Pks và Unique.
- Các kịch bản được tạo ra bởi SSDT
- thử nghiệm Ample và xem xét cho biết kịch bản để đảm bảo không bị bỏ lỡ
Bạn sẽ có thể cập nhật DB hiện tại của bạn với một SCHEMA compliant Azure
Suy nghĩ bổ sung:
Trong trường hợp của tôi, các yếu tố lấp đầy trên DB sản xuất không thực sự làm bất kỳ điều gì g hữu ích. Chúng được tạo ra như một điều mặc định để làm. Trong trường hợp của bạn, các yếu tố lấp đầy có thể là quan trọng vì vậy không chỉ loại bỏ tất cả chúng trên hộp không sản xuất Azure của bạn mà không biết hậu quả.
Có nhiều điều cần cân nhắc khi thực hiện việc này cho hệ thống sản xuất ... Ví dụ: điều này có thể gây ra một số chậm trễ phản chiếu và có thể khiến tệp nhật ký của bạn phát triển theo cách bạn không lường trước được. Cả hai chỉ thực sự quan trọng nếu bạn đang áp dụng trực tiếp cho sản xuất ...
Nó muốn được tốt đẹp nếu thiết lập chúng tất cả để ĐIỀN Factor 100 làm việc: -/
Có công cụ của bên thứ 3 ra ở đó (vì vậy tôi đã nghe) mà bạn có thể sử dụng để di chuyển đến Azure ...
một lựa chọn khác là sử dụng https://sqlazuremw.codeplex.com/
sử dụng đó để tạo ra một SCHEMA đó là Azure tuân thủ và sau đó nó sử dụng BCP để sao chép tất cả dữ liệu.
NHƯNG nếu bạn muốn thực hiện tuân thủ SCHEMA Azure hiện tại của mình để bạn có thể tạo tệp bacpac để tải lên Azure, điều này đã làm việc cho tôi một lần tôi phải thực hiện.
EDIT: Azure V12 hỗ trợ điền các yếu tố
Nếu tôi thử với fillfactor = 0 Tôi nhận được thông báo này: Fillfactor 0 không phải là phần trăm hợp lệ; fillfactor phải nằm trong khoảng từ 1 đến 100. Tôi nedd đặt nó là 0 để có thể xuất DB của tôi thành một bacpac. – danielUrrero
Đặt nó thành 0 không hoạt động (bất kỳ số nào từ 1 đến 100) – Rodney
chỉ để hiểu yêu cầu của bạn: tại sao bạn muốn đặt thành 0? –