Hàm vô hướng là gì SQL

Chúng tôi có cơ sở dữ liệu SQL Server có đặc tả kiểm toán cơ sở dữ liệu để kiểm tra tất cả các hành động thực thi trên cơ sở dữ liệu.

CREATE DATABASE AUDIT SPECIFICATION [dbAudit] FOR SERVER AUDIT [servAudit] ADD [EXECUTE ON DATABASE::[DatabaseName] BY [public]]

Chúng tôi đã phát hiện ra rằng một số truy vấn sẽ ghi vào nhật ký kiểm toán việc sử dụng hàm vô hướng cho mỗi hàng trong tập kết quả. Khi điều này xảy ra, nhật ký sẽ lấp đầy trước khi chúng ta có thể đưa nó vào nơi an nghỉ cuối cùng và chúng ta có một khoảng trống trong việc đăng nhập.

Thật không may vì lý do tuân thủ, chúng tôi không thể ngừng kiểm tra mọi EXECUTEtuyên bố.

Suy nghĩ đầu tiên của chúng tôi về cách tiếp cận vấn đề này là sử dụng WHEREmệnh đề trên Kiểm toán máy chủ để lọc ra hoạt động. Mã trông như thế này:

WHERE [object_id] not in [Select object_id from sys.objects where type = 'FN' ]

Thật không may, SQL Server không cho phép toán tử IN quan hệ [có thể vì nó không muốn truy vấn mỗi lần nó phải ghi vào nhật ký kiểm toán].

Chúng tôi muốn tránh việc viết một lưu trữ được mã hóa cứng object_idtrong WHEREmệnh đề, nhưng đó là suy nghĩ hiện tại của chúng tôi về cách tốt nhất để tiếp cận vấn đề này. Có một cách tiếp cận khác mà chúng ta nên xem xét?

Chúng tôi đã nhận thấy rằng khi hàm vô hướng được sử dụng trong CTE đệ quy, thì nó sẽ khiến truy vấn ghi vào nhật ký kiểm toán cho mỗi hàng trong tập kết quả.

Có một số Hàm có giá trị vô hướng được cung cấp bởi nhà cung cấp mà chúng tôi không thể xóa hoặc chuyển sang cơ sở dữ liệu thay thế.

Video liên quan

Chủ Đề