Thứ Năm, 20 tháng 12, 2012

Tìm danh sách các Store Procedure,View có liên quan đến Table nào đó trong MS SQL Server

Hôm nay mình cấu trúc lại database nên cần chỉnh sửa 1 số tên cột, xóa 1 số bảng không còn dùng nữa ra khỏi database.

Một điều khá mệt là hệ thống mình kết nối dữ liệu tới database đều sử dụng Store Proc hết, số lượng store proc rất nhiều. Khi sửa tên cột trong table, các store proc nào có gọi đến tên cột của table nó không tự động đổi cho nên khi gọi store proc này sẽ báo lỗi. Thêm 1 điều nữa là khi quyết định xóa 1 table mình phải chắc chắn không có store proc hay view nào đang dùng tới nó.

Sử dụng đoạn lệnh sau để tìm các store proc, view có sử dụng table muốn sửa hay muốn xóa:
  1. use [Database Name]  
  2. SELECT DISTINCT o.name, o.xtype  
  3. FROM syscomments c  
  4. INNER JOIN sysobjects o ON c.id=o.id  
  5. WHERE c.TEXT LIKE '%tableName%'      
Hoặc
SELECT o.name, o.xtype, m.definition
FROM sys.sql_modules  m  
INNER JOIN sysobjects o ON m.object_id = o.id 
WHERE m.definition LIKE '%tableName%' 
Cách làm này có thể không chính xác tuyệt đối (tìm trong nội dung có chứa tên của table) nhưng cũng khá hiệu quả.

1 nhận xét :