Utworzono , aby zdarzenie mogło zostać wywołane, gdy zmieni się wynik danego zapytania.Zaszyfruj procedurę składowaną utworzoną przez 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;
Po wykonaniu tego kodu, procedura przechowywana jest automatycznie tworzony z nazwą jak
SqlQueryNotificationStoredProcedure-82ae1b92-21c5-46ae-a2a1-511c4f849f76
Ta procedura jest szyfrowane co narusza podane mi wymagania. Mam dwie opcje:
- przekonać klienta, że to nie ma znaczenia, że procedura auto generowany jest szyfrowanych, ponieważ jedynie wykonuje prace porządkowe i nie zawiera prawdziwe informacje (dzięki ScottChamberlain za wskazanie na to uwagę).
- Znajdź sposób szyfrowania procedury składowanej generowanej przez SqlDependency.
Jak mogę wykonać opcję 2?
Zawartość procedury przechowywane w pytaniu:
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
Co to jest procedura, która wymaga szyfrowania? Nie mam przed sobą środowiska programistycznego, ale myślę, że cały ten proces dotyczy oczyszczenia w przypadku rozłączenia. Nie zawiera żadnych informacji, które wymagają szyfrowania (ale, jak powiedziałem, nie mam przed sobą środowiska testowego, więc mógłbym się mylić). –
@ScottChamberlain Dodałem treść procedury do pytania, aby można było ją zobaczyć. Rozumiem, że procedura składowana nie musi być szyfrowana, ale mam wymaganie stwierdzające, że musi być zaszyfrowane. Mógłbym odepchnąć, a klient mógłby zrobić dla mnie wyjątki, ale nie o to chodzi. – Rainbolt
Czy próbowałeś Z SZYFROWANIE? – idstam