2015-03-02 17 views
7

tôi muốn thay đổi một tên cột để cái tên mới xuất hiện trong một bảngĐổi tên một cột mà không vi phạm các kịch bản và thủ tục được lưu trữ

nhưng ở đây vấn đề tôi muốn tự sửa đổi các mặt column name trong Triggers hoặc SP's.

Có cách nào tốt hơn để làm điều đó không.

Để rename một cột sáng sử dụng này

sp_RENAME 'Tablename.old_Column', 'new_column' , 'COLUMN'; 

tương tự làm thế nào tôi có thể làm điều đó cho triggers hoặc SP's.? mà không cần mở từng kịch bản?

+5

Bạn có thể thay đổi tên cột, sau đó thêm cột được tính với tên cột trước đó và thay đổi trình kích hoạt và thủ tục được lưu trữ khi rảnh rỗi. –

+0

Bạn có thể thử lấy mã kịch bản từ bảng sys, thay thế và biên dịch lại nó trong một bước bằng cách sử dụng tập lệnh nhưng nếu không có nhiều đối tượng tôi muốn thực hiện bằng cách mở từng tập lệnh để đảm bảo tính chính xác – jean

+0

Đồng thời, cũng như MS-SQL bạn có thể sử dụng 'thay đổi bảng dbo.tbBase cột thay đổi [Tên gốc] UNIQUEIDENTIFIER không rỗng GO' – jean

Trả lời

3

Vâng, có một loạt các công cụ của bên thứ 3 được hứa hẹn kiểu này "đổi tên an toàn", một số miễn phí và một số thì không:

  • ApexSQL có free tool cho rằng, 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 cách đặt tên lại an toàn, Tuy nhiên, nó không còn miễn phí nữa.
  • Microsoft có bổ trợ studio trực quan được gọi là SQL Server Data Tools (hoặc SSDT trong phiên bản ngắn), như Dan Guzman đã viết trong nhận xét 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 công việc 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.

lựa chọn khác là để thử và viết kịch bản sql mình, Tuy nhiên có một vài điều cần xem xét 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? Tôi có nghĩa là, có thể là một số phần mềm đang thực hiện câu lệnh sql trực tiếp trên bảng đó? Nếu vậy, bạn có thể phá vỡ nó khi bạn đổi tên cột đó, và không có công cụ sql nào sẽ giúp đỡ trong tình huống 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 coi bản thân mình là khá kinh nghiệm với máy chủ sql, nhưng tôi nghĩ rằng viết một kịch bản như thế là vượt ra ngoài các kỹ năng của tôi. Không phải điều đó là không thể đối với tôi, nhưng có lẽ 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 viết nó cho mình, có một vài điều mà có thể giúp bạn trong nhiệm vụ đó:

Thứ nhất, tài liệu Microsoft chính thức của sys.sql_expression_dependencies.
Thứ hai, một bài viết có tên là Different Ways to Find SQL Server Object Dependencies được viết bởi 13 năm kinh nghiệm DBA, và cuối cùng nhưng không kém phần quan trọng, a related question trên trang web của Quản trị viên cơ sở dữ liệu StackExchange. Bạn có thể, tất nhiên, đi theo cách an toàn mà Gordon Linoff đề xuất trong bình luận 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 mình, nhưng sau đó bạn sẽ phải tự sửa đổi tất cả các cột phụ thuộc theo cách thủ công, và từ những gì tôi hiểu, đó là những gì bạn muốn tránh.

1
  1. Đổi tên cột Bảng
  2. Xóa Bảng cột
  3. Alter Table Phím

nhất sử dụng cách Dự án Cơ sở dữ liệu trong Visual Studio. Tham khảo này liên kết

link 1

link 2

1
  1. bạn có thể làm những gì @GorDon gợi ý.

  2. Ngoài ra, bạn cũng có thể chơi với truy vấn này,

chọn o.name, sc. * Từ sys.syscomments sc bên tham gia sys.objects o trên sc.id = o.object_id sc.text thích nơi '% oldcolumnname%'

này sẽ trở lại danh sách tất cả proc và trigger.Also bạn có thể thay đổi bộ lọc để có được chính xác list.then nó sẽ rất dễ dàng cho bạn để sửa đổi , theo cách thủ công.

Nhưng bất cứ điều gì bạn quyết định, không chỉ đơn giản là thả cột cũ. Để an toàn, thậm chí hãy tiếp tục sao lưu.

0

Bạn có thể muốn thay thế văn bản đó theo định nghĩa. Tuy nhiên, bạn sẽ cần một kết nối quản trị viên chuyên dụng trong máy chủ sql. Các phiên bản cũng khác nhau trong việc thiết lập kết nối quản trị viên chuyên dụng. Thiết lập tham số khởi động bằng cách thêm; -T7806 theo nâng cao. Và bằng cách thêm Admin: trước tên máy chủ khi đăng nhập. Lúc đó, bạn có thể sửa đổi giá trị của định nghĩa.

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