2012-11-26 26 views
23

Tôi làm việc với SQL Server 2008 và tôi có cơ sở dữ liệu có hơn 1500 cột và khoảng 500 quy trình được lưu trữ và ....Xác định đối tượng nào tham chiếu bảng trong SQL Server

Tôi muốn đổi tên bảng có nhiều mối quan hệ và được tham chiếu trong nhiều thủ tục và chế độ xem được lưu trữ và ....

Làm cách nào để có thể nhận tất cả các mục trong cơ sở dữ liệu có mối quan hệ với bảng này?

Cảm ơn.

Trả lời

12

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 số MIỄN PHÍ Công cụ Cổng Đỏ có tên là SQL Search, công cụ này sẽ tìm kiếm toàn bộ cơ sở dữ liệu của bạn cho bất kỳ loại chuỗi nào.

enter image description here

enter image description here

Đó 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 ??

+0

@MitchWheat: chỉ cần cài đặt nó vào SSMS và sử dụng vài lần - sau đó, bạn ** sẽ không * * quên nó đi! :-) –

30

Sử dụng sys.dm_sql_referencing_entities:

SELECT 
    referencing_schema_name, referencing_entity_name, referencing_id, 
    referencing_class_desc, is_caller_dependent 
FROM 
    sys.dm_sql_referencing_entities ('mySchemaName.myTableName', 'OBJECT'); 
GO 

nơi 'mySchemaName.myTableName' là schema.table của bạn, ví dụ 'dbo.MyTable'

+0

Thanks.But "mySchemaName" và "OBJECT" là gì? – Tavousi

+2

@Tavousi - Xem http://msdn.microsoft.com/en-us/library/bb630351.aspx Như bạn có thể thấy bạn muốn sử dụng ''OBJECT'' làm tham số thứ hai. Lược đồ mặc định trong SQL Server là 'dbo' nên đó có thể là lược đồ của bạn. – Tobsey

+1

Nếu điều này bất ngờ trả về 0 hàng cho bạn, hãy lưu ý rằng trong SQL Server 2008-2012, sys.dm_sql_referencing_entites yêu cầu quyền CONTROL trên đối tượng được tham chiếu để hoạt động. Hãy thử chạy truy vấn dưới dạng người dùng cơ sở dữ liệu với các permisisons nâng cao. –

6

Đây là một giải pháp khác mà tôi đã tìm thấy. Bạn không phải cài đặt bất kỳ công cụ nào. Chỉ cần chạy trên bộ phân tích truy vấn.

Use [Database] 
Go 

SELECT 
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID), 
referencing_object_name = o.name, 
referencing_object_type_desc = o.type_desc, 
referenced_schema_name, 
referenced_object_name = referenced_entity_name, 
referenced_object_type_desc = o1.type_desc, 
referenced_server_name, referenced_database_name 
--,sed.* -- Uncomment for all the columns 
FROM 
sys.sql_expression_dependencies sed 
INNER JOIN 
sys.objects o ON sed.referencing_id = o.[object_id] 
LEFT OUTER JOIN 
sys.objects o1 ON sed.referenced_id = o1.[object_id] 
WHERE 
referenced_entity_name = 'SP_Pay_GetData' 
order by referencing_object_name 
+0

tại sao giải pháp này không được bỏ phiếu nhiều hơn? –

+0

cấp tín dụng khi đến hạn https://blog.sqlauthority.com/2012/12/02/sql-server-find-referenced-or-referencing-object-in-sql-server-using-sys-sql_expression_dependencies/ – cBlaine

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