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

Đổi tên một cột mà không phá vỡ các tập lệnh và thủ tục được lưu trữ

Chà, có rất nhiều công cụ của bên thứ 3 hứa hẹn loại "đổi tên an toàn" này, một số miễn phí và một số thì không:

  • ApexSQL có công cụ miễn phí cho điều đó, như MWillemse đã viết trong câu trả lời của mình,
  • RedGate có một công cụ thương mại được gọi là SQLPrompt cũng có một tìm nạp đổi tên an toàn, Tuy nhiên, nó còn lâu mới được miễn phí.
  • Microsoft có một phần bổ trợ trực quan cho studio có tên Công cụ dữ liệu máy chủ SQL (hoặc SSDT trong phiên bản ngắn), với tên Dan Guzman đã viết trong bình luận của mình.

Tôi phải nói rằng tôi chưa bao giờ thử bất kỳ công cụ cụ thể nào cho nhiệm vụ cụ thể đó, nhưng tôi có một số kinh nghiệm với SSDT và một số sản phẩm của RedGate và tôi coi chúng là những công cụ rất tốt. Tôi không biết gì về ApexSQL.

Một tùy chọn khác là thử và tự viết script sql, Tuy nhiên, có một số điều cần cân nhắc trước khi bạn bắt đầu:

  • Bảng của bạn có thể được truy cập trực tiếp từ bên ngoài máy chủ sql không? Ý tôi là, có thể một số phần mềm đang thực thi câu lệnh sql trực tiếp trên bảng đó không? Nếu vậy, bạn có thể bị hỏng khi đổi tên cột đó và không có công cụ sql nào có thể giúp bạn trong trường hợp này.
  • Kỹ năng viết kịch bản sql của bạn có thực sự tốt không? Tôi tự cho mình là người khá có kinh nghiệm với máy chủ sql, nhưng tôi nghĩ việc viết một kịch bản như vậy vượt quá kỹ năng của tôi. Đối với tôi không phải là không thể, nhưng có lẽ tôi sẽ mất quá nhiều thời gian và công sức cho một thứ mà tôi có thể nhận được miễn phí.

Nếu bạn quyết định tự viết nó, có một số bài báo có thể giúp bạn trong công việc đó:

Đầu tiên, tài liệu chính thức của Microsoft về sys.sql_expression_dependencies .
Thứ hai, một bài báo có tên Các cách khác nhau để tìm phụ thuộc đối tượng máy chủ SQL được viết bởi DBA 13 năm kinh nghiệm và cuối cùng nhưng không kém phần quan trọng, một câu hỏi liên quan trên trang web của Quản trị viên Cơ sở dữ liệu của StackExchange.

Tất nhiên, bạn có thể đi theo cách an toàn mà Gordon Linoff đã đề xuất trong nhận xét của mình hoặc sử dụng các từ đồng nghĩa như dữ liệu đích được đề xuất trong câu trả lời của anh ấy, nhưng sau đó bạn sẽ phải tự sửa đổi tất cả các phụ thuộc cột theo cách thủ công và từ những gì tôi hiểu , đó là điều bạn muốn tránh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao các tiền tố được phân tách bằng dấu chấm bị bỏ qua trong danh sách cột cho các câu lệnh INSERT?

  2. Hàm AWS Lambda để kết nối với SQL Server bằng Python

  3. Cách sao chép tốt hơn một tập hợp dữ liệu trong SQL Server

  4. Phân tích MS SQL Server cho những người lần đầu tiên nhìn thấy nó

  5. Sửa lỗi Msg 4151 “Kiểu của đối số đầu tiên đối với NULLIF không thể là hằng số NULL vì kiểu của đối số đầu tiên phải được biết” trong SQL Server