Có cách nào để tìm tất cả các tham chiếu đến một cột trong một cơ sở dữ liệu SQL Server 2008 không? Tôi cần phải biết các bảng khác hoặc các thủ tục được lưu trữ hoặc xem các cột được tham chiếu từ.Tìm tất cả các tham chiếu đến một cột trong SQL Server 2008
Trả lời
Nếu bạn cần tìm các đối tượng cơ sở dữ liệu (ví dụ như bảng, cột, gây nên) theo tên - có một cái nhìn tại các công cụ miễn phí Red-Gate gọi SQL Search mà thực hiện điều này - nó tìm kiếm toàn bộ cơ sở dữ liệu của bạn cho bất kỳ loại chuỗi (S).
Đó là một vĩ đại cần phải có công cụ cho bất kỳ nhà phát triển DBA hoặc cơ sở dữ liệu - sao tôi đã đề cập đến nó hoàn toàn miễn phí để sử dụng cho bất kỳ loại sử dụng ??
Bạn có thể thử sử dụng công cụ như ApexSQL Search. Nó tìm kiếm các tên đối tượng nhưng nó cũng tìm kiếm một danh sách các đối tượng phụ thuộc ngay cả khi các cột trong bảng/khung nhìn phụ thuộc được đặt tên khác nhau.
Giải pháp khác là sử dụng chế độ xem hệ thống và/hoặc chức năng hệ thống để nhận dữ liệu bạn cần. Đề xuất là sử dụng sys.foreign_keys, sys.objects, sys.all_columns
để nhận dữ liệu bạn cần.
Khi tôi cần phân tích tác động do thay đổi giản đồ bảng, tôi sử dụng các bước sau để phân tích. Điều này có thể không đầy đủ nhưng hữu ích!
- Sp_help [TableName]: Điều này giúp tôi tìm tất cả các ràng buộc KEY NGOẠI NGOẠI Tham khảo. Tôi cũng có thể tìm thấy bất kỳ bảng nào khác tham khảo bảng này là Khóa NGOẠI TỆ.
- Sp_depends [TableName]: Điều này giúp tìm Thủ tục, Hàm và Chế độ xem bằng cách sử dụng bảng này.
- phương pháp Brute lực: tôi sử dụng bảng hệ thống khác nhau và chức năng để kiểm tra các từ khóa cụ thể trong Công Việc SQL, mô-đun, vv
FYI: sp_help [TableName] Sp_depends [TableName]
select top 10 * from msdb.dbo.sysjobsteps where command like '%%'
SELECT top 10 Name, OBJECT_DEFINITION(OBJECT_ID)
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%%'
SELECT top 10 OBJECT_NAME(object_id), *
FROM sys.sql_modules
WHERE definition LIKE '%%'
sp_xxx thường không được hỗ trợ bởi các hàm sys.xxx. Trong trường hợp này là sys.dm_sql_referencing_entities(). Vẫn sp_depends chỉ cho tôi đi đúng hướng nên +1. –
Một câu lệnh sql tương tự mà tôi nghĩ là hoàn chỉnh hơn (trình kích hoạt?) Là tại: http://stackoverflow.com/a/30432937/1991614 không chắc chắn nếu nó tìm thấy khóa foriegn tho – bitcoder