Tôi đã tạo một SqlDependency để một sự kiện sẽ kích hoạt khi kết quả của một truy vấn cụ thể thay đổi.Mã hóa quy trình được lưu trữ được tạo bởi SqlDependency
// Create a command
SqlConnection conn = new SqlConnection(connectionString);
string query = "SELECT MyColumn FROM MyTable;";
SqlCommand cmd = new SqlCommand(query, conn)
cmd.CommandType = CommandType.Text;
// Register a dependency
SqlDependency dependency = new SqlDependency(cmd);
dependency.OnChange += DependencyOnChange;
Khi mã này thực hiện, một thủ tục lưu trữ được tự động tạo ra với một cái tên như
SqlQueryNotificationStoredProcedure-82ae1b92-21c5-46ae-a2a1-511c4f849f76
Thủ tục này không được mã hóa, vi phạm các yêu cầu tôi đã được đưa ra. Tôi có hai lựa chọn:
- Thuyết phục khách hàng rằng nó không quan trọng mà tự động thủ tục tạo ra không được mã hóa bởi vì nó chỉ làm việc dọn dẹp và không chứa thông tin thực tế (nhờ ScottChamberlain cho trỏ này ra).
- Tìm cách mã hóa quy trình được lưu trữ do SqlDependency tạo ra.
Tôi có thể thực hiện tùy chọn 2 bằng cách nào?
Nội dung của thủ tục lưu trữ trong câu hỏi:
CREATE PROCEDURE [dbo].[SqlQueryNotificationStoredProcedure-b124707b-23fc-4002-aac3-4d52a71c5d6b]
AS
BEGIN
BEGIN TRANSACTION;
RECEIVE TOP (0) conversation_handle
FROM [SqlQueryNotificationService-b124707b-23fc-4002-aac3-4d52a71c5d6b];
IF (
SELECT COUNT(*)
FROM [SqlQueryNotificationService-b124707b-23fc-4002-aac3-4d52a71c5d6b]
WHERE message_type_name = 'http://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer'
) > 0
BEGIN
IF (
(
SELECT COUNT(*)
FROM sys.services
WHERE NAME = 'SqlQueryNotificationService-b124707b-23fc-4002-aac3-4d52a71c5d6b'
) > 0
)
DROP SERVICE [SqlQueryNotificationService-b124707b-23fc-4002-aac3-4d52a71c5d6b];
IF (OBJECT_ID('SqlQueryNotificationService-b124707b-23fc-4002-aac3-4d52a71c5d6b', 'SQ') IS NOT NULL)
DROP QUEUE [SqlQueryNotificationService-b124707b-23fc-4002-aac3-4d52a71c5d6b];
DROP PROCEDURE [SqlQueryNotificationStoredProcedure-b124707b-23fc-4002-aac3-4d52a71c5d6b];
END
COMMIT TRANSACTION;
END
GO
Quy trình thực hiện yêu cầu mã hóa là gì? Tôi không có môi trường dev của tôi trước mặt tôi nhưng tôi nghĩ rằng tất cả những gì proc là để làm sạch trong trường hợp ngắt kết nối. Nó không chứa thông tin cần mã hóa (nhưng như tôi đã nói tôi không có môi trường thử nghiệm trước mặt nên tôi có thể sai). –
@ScottChamberlain Tôi đã thêm nội dung của quy trình vào câu hỏi để bạn có thể xem nó. Tôi hiểu rằng các thủ tục được lưu trữ không cần phải được mã hóa, nhưng tôi có một yêu cầu nói rằng nó phải được mã hóa. Tôi có thể đẩy lùi, và khách hàng có thể làm ngoại lệ cho tôi, nhưng đó không phải là vấn đề. – Rainbolt
Bạn đã thử VỚI ENCRYPTION chưa? – idstam