Ich habe eine gespeicherte Prozedur, die einen symmetrischen Schlüssel entschlüsselt dann eine Einfügung in eine Tabelle ausführt, wenn der entschlüsselte Wert einem Wert in einer anderen Tabelle entspricht.Führen Sie einen Masseneinfüge- und Entschlüsselungs-symmetrischen Schlüssel in SQL Server 2014 aus
Ich möchte, dass die Prozedur geändert wird, um eine Masseneinfügung durchzuführen, anstatt die DB-Verbindung in jeder Zeile zu öffnen und zu schließen, um den Vorgang durchzuführen.
Mein Gedanke war, eine Entschlüsselung für die gesamte Spalte (EmployeeSeed.SEED
) dann eine Verknüpfung auf Employee_FN
innerhalb der Insert-Anweisung durchzuführen.
Hat jemand irgendwelche Empfehlungen, wie man dies in einen Masseneinsatz umwandelt?
Hier ist mein Code:
USE [Tracker]
GO
/****** Object: StoredProcedure [dbo].[VACATION] Script Date: 7/20/2017 3:10:18 PM ******/
SET ANSI_NULLS ON -- return no rows if null value is present
GO
SET QUOTED_IDENTIFIER ON -- define literals to be delimited by '' and identifiers by ""
GO
ALTER PROCEDURE [dbo].[VACATION]
@ID nvarchar(40),
@HOURS float,
@DESC nvarchar(max),
@TYPE nvarchar(50)
AS
OPEN SYMMETRIC KEY EmployeeCert_Key
DECRYPTION BY CERTIFICATE EmployeeCert
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @seed VARBINARY(16)
DECLARE @EMPLOYEE_FN nvarchar(20)
--Select Employee FN based on Decrypted ID
SET @EMPLOYEE_FN =
(
SELECT EMPLOYEE.[EMPLOYEE_FN]
FROM Employee
JOIN EmployeeSeed
ON Employee.EMPLOYEE_FN = EMPLOYEESEED.EMPLOYEE_FN
WHERE (CONVERT(nvarchar, -- Convert from binary to NVARCHAR
DECRYPTBYKEY(ID, 1, -- Designate column (1 is same as encrypted)
HASHBYTES('SHA1', EmployeeSeed.SEED))) -- SHA1 seed
= @ID)
)
--insert into table
IF @EMPLOYEE_FN is not null
BEGIN
INSERT INTO [dbo].VACATION_BENEFIT
([EMPLOYEE_FN]
,[HOURS]
,[TYPE]
,[DESC])
VALUES
(@EMPLOYEE_FN,
@HOURS,
@TYPE,
@DESC)
END
CLOSE SYMMETRIC KEY EmployeeCert_Key
END
Danke - ich werde dies versuchen und lassen Sie wissen, ob es funktioniert. – erikpasta2073364