Bối cảnh: Một số ràng buộc cột mặc định của chúng tôi đã được tạo mà không có tên rõ ràng, vì vậy chúng tôi nhận được các tên thú vị khác nhau từ máy chủ này sang máy chủ khác như: DF__User__TimeZoneIn__5C4D869D
Tôi muốn có tất cả chúng có thể quản lý được bằng cách đặt tên nhất quán DF_Users_TimeZoneInfo
để chúng tôi có thể đảm bảo rằng các ràng buộc phù hợp tồn tại trên các bảng mục tiêu trong tương lai (như trong so sánh RedGate, hoặc thậm chí chỉ bằng trực quan)
Tôi đã có một kịch bản chủ yếu hoạt động cho những gì tôi muốn:
select 'sp_rename N''[' + s.name + '].[' + d.name + ']'',
N''[DF_' + t.name + '_' + c.name + ']'', ''OBJECT'';'
from sys.tables t
join
sys.default_constraints d
on d.parent_object_id = t.object_id
join
sys.columns c
on c.object_id = t.object_id
and c.column_id = d.parent_column_id
join sys.schemas s
on t.schema_id = s.schema_id
WHERE d.NAME like 'DF[_][_]%'
Nhưng điều này chỉ mang lại cho tôi một kết quả, và không phải thứ gì đó tôi thực sự có thể chuyển vào một người thực thi hay bất cứ điều gì.
Làm thế nào tôi có thể thực hiện điều này để tôi có thể thực hiện các sp_rename
tập lệnh đó mà không cần phải sao chép tất cả các phần tử được trả về và dán chúng vào một cửa sổ truy vấn mới và chạy lại chúng? Cố gắng lưu càng nhiều tổ hợp phím càng tốt để tôi có thể sửa lỗi này trong nhiều môi trường.