Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tham chiếu Các thủ tục được lưu trữ cho tất cả các cơ sở dữ liệu trong máy chủ

Câu hỏi này đã được hỏi nhiều lần trên SO, nhưng thú vị là dường như không có sự thống nhất về câu trả lời tốt nhất. Vì vậy, đây là bản tóm tắt các tùy chọn chính mà nhiều người đã đề xuất (không theo thứ tự đặc biệt):

  1. Đặt nó vào cơ sở dữ liệu chính với một sp_ tiền tố để SQL Server tìm kiếm nó ở đó đầu tiên
  2. Đặt nó vào cơ sở dữ liệu mô hình để nó tự động được thêm vào tất cả các DB mới
  3. Chỉ tạo cơ sở dữ liệu cho các thủ tục 'toàn cục' (và các đối tượng khác) và gọi chúng bằng cách đặt tên ba phần
  4. Là 3, nhưng tạo từ đồng nghĩa trong các cơ sở dữ liệu khác để bạn không cần đặt tên ba phần
  5. Sử dụng các công cụ thương mại hoặc tự phát triển để quản lý việc triển khai tới nhiều cơ sở dữ liệu
  6. Là 5, nhưng triển khai cho một cơ sở dữ liệu, sau đó diff cơ sở dữ liệu và áp dụng tập lệnh khác để triển khai cho các cơ sở dữ liệu khác

Theo ý kiến ​​của tôi, 1 là không bắt đầu vì Microsoft nói rõ ràng bạn không nên tạo các đối tượng trong cơ sở dữ liệu chính. 2 âm thanh tốt nhưng trên thực tế, cơ sở dữ liệu được khôi phục hoặc sao chép thường xuyên hơn được tạo từ đầu (YMMV), vì vậy việc sử dụng mô hình là không đáng tin cậy.

3 và 4 là tốt cho các bảng và dạng xem, nhưng ngữ cảnh thực thi có thể là một vấn đề đối với các thủ tục và hàm được lưu trữ. Nhưng điều này phụ thuộc vào logic trong các quy trình và nó có thể khả thi trong trường hợp của bạn.

Nhưng 1-4 đều có vấn đề tiềm ẩn là nếu bạn chỉ có một đối tượng, bạn sẽ chỉ có một phiên bản của đối tượng đó và thường hữu ích khi có các phiên bản khác nhau trong các DB khác nhau, để thử nghiệm hoặc chỉ dành cho các khách hàng khác nhau.

5 và 6 là các biến thể trên cùng một chủ đề và cá nhân tôi thấy đây là cách tiếp cận tốt nhất vì dù sao việc triển khai cũng là một vấn đề bạn phải giải quyết, vì vậy bạn cũng có thể làm được và đảm bảo rằng bạn có sẵn kiến ​​thức, công cụ và quy trình. để có thể triển khai mã một cách rõ ràng và nhanh chóng tới bất kỳ cơ sở dữ liệu nào theo cách tự động, được kiểm soát.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển đổi int sang date trong SQL Server 2008

  2. SQL Server 2017 Backup -2

  3. Cách ánh xạ một trường thực thể có tên là một từ dành riêng trong JPA

  4. Tôi có thể tạo chức năng toàn cục trong SQL Server không?

  5. Việc phân vùng dẫn đến một truy vấn tổng đang chạy