5

Tôi đang tìm thông tin liên quan đến những điều sau đây:Thực hành tốt nhất cho thay đổi lược đồ SQL Server 2008

Thực tiễn tốt nhất để cập nhật lược đồ DB của tôi là DB của tôi là gì, hoặc thậm chí làm thay đổi lược đồ DB nói chung.

Cơ sở dữ liệu sản xuất là back-end cho hai trang web ASP.NET riêng biệt.

Quá trình thay đổi giản đồ của chúng tôi khá mạnh mẽ với mỗi "di chuyển" thực sự là tệp .cs chứa các thay đổi lược đồ. Sau đó chúng tôi sẽ sử dụng ADO.NET để áp dụng các thay đổi lược đồ đối với db.

Câu hỏi của tôi là nhiều hơn về kết nối của cơ sở dữ liệu.

Tôi có nên dừng hai trang web đang truy cập vào db hay không. Tôi cho là tôi nên làm. Tôi có nên đặt DB vào chế độ người dùng đơn lẻ không. Có vẻ như tôi nên nhưng tôi không hoàn toàn tự tin về điều đó.

Tôi có thể thiếu gì? Điều gì đã cắn bạn trong tay trước khi liên quan đến thay đổi lược đồ DB.

Trả lời

5

Nếu các cập nhật thay đổi những thứ như tên cột, thông số proc được lưu trữ, v.v ... thì luôn áp dụng các ứng dụng ngoại tuyến trước khi thực hiện cập nhật lược đồ.

Nếu nội dung cập nhật chỉ dành cho những thứ không ảnh hưởng đến việc xử lý dữ liệu bình thường thì bạn có thể có thể làm như vậy "nóng". Danh mục này là khi bạn thêm những thứ như chỉ mục, bảng, v.v.

Nếu ai đó đang sử dụng ứng dụng trong khi cập nhật giản đồ đang xử lý, bạn có thể tìm thấy chính mình trong tình huống mà tính nhất quán của dữ liệu bị suy giảm.

Nếu bản cập nhật này yêu cầu bản cập nhật tương ứng cho các tệp ứng dụng web của bạn thì hãy chuyển (các) trang web đó sang chế độ ngoại tuyến trước khi thực hiện cập nhật. Bạn không biết ai có thể đang xem trang và chỉ muốn nhấp vào gửi để nhận lỗi ...

Thường việc bảo trì loại này được thực hiện trong giờ cao điểm. Bạn sẽ muốn thông báo cho người dùng trước thời hạn khi trang web sẽ ngừng hoạt động và trong bao lâu.

Ngoài ra, chúng tôi sử dụng các công cụ như So sánh SQL của Redgate để viết các bản cập nhật db của chúng tôi. Điều này được thực hiện trên một máy chủ dàn dựng đã được làm mới từ dữ liệu sản xuất trước khi đẩy thực tế để đảm bảo rằng không có bất ngờ và nó có thể được thực hiện rất nhanh chóng.

Về chế độ người dùng đơn, bạn thường sử dụng chế độ này để giới hạn quyền truy cập vào cơ sở dữ liệu vào một cá thể studio quản lý duy nhất. Nó không phải là một cái gì đó chúng ta thường làm như là một phần của triển khai của chúng tôi.

0

Tình huống lý tưởng, nhưng không phải lúc nào cũng đạt được: Bạn thực hiện các thay đổi lược đồ tương thích với phiên bản > cũ của trang web của bạn <. Sau đó, bạn phát hành V < mới > vào máy chủ web của mình. Khi tất cả các máy chủ web của bạn lên tới V < mới >, thì bạn có thể thực hiện bất kỳ việc dọn dẹp nào (điền các giá trị còn thiếu, v.v.), và sau đó thực hiện các thay đổi không phù hợp.

3

Tôi chưa xem tuyến đường .cs/ado.net để thực hiện thay đổi lược đồ. Những gì chúng ta làm là tạo ra các tệp 'delta' .SQL - SQL để thực hiện các thay đổi. Chúng được thực hiện dựa trên một lược đồ của bản sửa đổi đã biết để thực hiện các thay đổi và chạy .SQL là một phần của triển khai. Tốt nhất chúng ta có thể, chúng tôi cũng cố gắng làm cho chúng an toàn để chạy nhiều lần bằng cách kiểm tra lược đồ cho những thứ cụ thể như sự tồn tại của một cột, chỉ mục, v.v. Bằng cách đó chúng có thể được thực thi 'vô tình' nhiều lần.

Khi chúng tôi triển khai, chúng tôi có thời gian cụ thể trong ngày/tuần, cảnh báo người dùng/khách hàng, trang web đóng cửa, v.v ... Triển khai 'thực hành' diễn ra gần như mỗi ngày trên máy chủ dev và dàn dựng vào những ngày cuối cùng trước khi phát hành , sự tự tin triển khai cuối cùng là cao.

Giữ các thay đổi giản đồ trong SQL chúng trông giống như lược đồ 'chủ' SQL mà chúng thay đổi và do đó dễ theo dõi hơn. Ít để gỡ lỗi quá!

Chúng cũng được quản lý trong TFS cùng với phần còn lại của mã.

+1

Tiếp tuyến, an toàn để thực thi nhiều lần: thuộc tính này được gọi là tính không tải. Tệp .SQL của bạn không có giá trị. –

Các vấn đề liên quan