Nếu bạn là developer thì chắc chắn rằng bạn phải biết SQLServer ! (Hiện tại SQLServer đã có đến phiên bản SQLServer 2008). Tuy nhiên ứng với phiên bản SQLServer nào Microsoft đều đưa ra các store procedure hệ thống (System stored procedures)
Bài viết này mình đề cập đến 5 store procedure hệ thống theo mình nghĩ là mỗi developer khi làm việc với SQLServer đều phải biết.
1. sp_help
a. Mục đích
Đây là store procedure hệ thống giúp bạn tra cứu nhanh về thông tin của các đối tượng (objects) có trong database. Như là: xem cấu trúc của 1 bảng, xem bảng này có phụ thuộc bảng nào, xem bảng này có Primary Key là Foregin Key của table nào, .....
b. Cú pháp
- sp_help : để lấy tất cả các thông tin về tất cả các đối tượng trong Database
- sp_help <tên của đối tượng> : để lấy tất cả các thông tin cụ thể của đối tượng (thông số tên đối tượng truyền vào) trong Database
c. Ví dụ
- sp_help ---> Khi đó bạn sẽ thấy giống màn hình sau:
- sp_help 'Person.Address' ---> Khi cần lấy thông tin của table Person.Address trong Database: Adventure Works. Khi đó bạn se thấy giống màn hình sau
2. sp_helptext
a. Mục đích
Đây là store procedure hệ thống giúp bạn tra cứu định nghĩa các đối tượng: store procedure hệ thống, store procedure do người dùng định nghĩa, hàm do người dùng định nghĩa, trigger, ....
b. Cú pháp
- sp_helptext <tên của đối tượng> : để lấy định nghĩa của đối tượng (thông số tên đối tượng truyền vào) trong Database
c. Ví dụ
3. sp_MSforeachtable
a. Mục đích
Đây là store procedure hệ thống giúp bạn duyệt qua tất cả các table trong Database. Khi đó bạn dùng kí tự ? để làm kí tự đại diện cho table. Ví dụ cơ bản nhất khi dùng store procedure hệ thống này là đếm số dòng của tất cả các bảng trong Database
b. Cú pháp
- sp_MSforeachtable <Câu lệnh SQL> ---> Câu lệnh SQL bắt buộc phải chứ kí tự ? làm kí tự đại diện cho tên table
c. Ví dụ
- sp_MSforeachtable 'SELECT ''?'', COUNT(*) FROM ?' : Đếm số dòng của tất cả các table trong Database: Adventure Works.Khi đó bạn sẽ thấy màn hình như sau
4. sp_depends
a. Mục đích
Đây là store procedure hệ thống giúp bạn liệt kê các Views, store procedure do người dùng định nghĩa, hàm do người dùng định nghĩa, trigger, ... có phụ thuộc vào tên đối tượng truyền vào
b. Cú pháp
- sp_depends <tên của đối tượng> --> tìm các đối tượng khác có phụ thuộc với tên đối tượng được của thông số truyền vào
c. Ví dụ
- sp_depends 'Person.Address' -> tìm các đối tượng khác phụ thuộc vào table: Person.Address trong Database: Adventure Works. Khi đó ta sẽ thấy như màn hình sau
5. sp_spaceused
a. Mục đích
Đây là store procedure hệ thống giúp bạn lấy kích thước của Database hoặc kích thước của một đối tượng trong Database.
b. Cú pháp
- sp_spaceused ---> lấy kích thước của Database (là Database mà ta đang thực thi store procedure hệ thống này)
- sp_spaceused <tên của đối tượng> ---> lấy kích thước của 1 đối tượng cụ thể được truyền vào từ thông số tên đối tượng
c. Ví dụ
- sp_spaceused ---> lấy kích thước của Database: Adventure Works. Khi đó bạn sẽ thấy màn hình như sau
- sp_spaceused ‘Person.Address’ ---> lấy kích thước của table: Person.Address trong Database: Adventure Works. Khi đó bạn sẽ thấy màn hình như sau
Và cuối cùng, bạn hãy thực hiện lệnh sau
sp_MSforeachtable 'execute sp_spaceused @objname = ''?'' '
Nó là sự kết hợp của 2 lệnh: sp_MSforeachtable, sp_spaceused mình vừa giới thiệu ở trên và cho biết nó làm mục đích gì ?