Durant nos développements, nous souhaitions pouvoir profiter d’une fonction de cryptage de nos données, que nous utilisions déjà dans notre projet C#.
Au lieu de s’embêter et risquer une incompatibilité avec l’encryptage depuis SQL Server, autant importer notre fonction dans Sql server, non ?
C’est parti pour le périple créer et importer une fonction CLR UNSAFE dans SQL Server !
Ajout d’une fonction CLR avec C#
Choix de l’UNSAFE car nous utilisons de la cryptography, et ce n’est pas autorisé de base par SQL server.
SAFE / UNSAFE
Pour être sûr de pouvoir exécuter votre procédure stockée CLR, vous devez l’activer du côté SQL SERVER :
EXEC sp_configure 'show advanced options', 1 RECONFIGURE; EXEC sp_configure 'clr strict security', 0; RECONFIGURE;
En mode UNSAFE
Puis vous devez obligatoirement ajouter la procédure stockée comme faisant partie des assemblys de confiance :
DECLARE @clrBin varbinary(max) = 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C010300618C315E0000000000000000E00022200B013000000C000000060000000000001E2A0000002000000040000000000010002000000002000004000000000000000600000000000000008000000002000074F00000030060850000100000100000000010000010000000000000100000000000000000000000CC2900004F00000000400000E802000000000000000000000000000000000000006000000C000000942800001C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E74657874000000240A000000200000000C000000020000000000000000000000000000200000602E72737263000000E80200000040000000040000000E0000000000000000000000000000400000402E72656C6F6300000C0000000060000000020000001200000000000000000000000000004000004200000000000000000000000000000000002A00000000000048000000020005006C210000A806000009000000000000000000000000000000142800008000000000000000000000000000000000000000000000000000000000000000000000001B300300CF00000001000011001F108D0C0000010A280500000A0D0009280600000A72010000706F0700000A6F0800000A0009066F0900000A0009096F0A00000A096F0B00000A6F0C00000A1304730D00000A1305001105110417730E00000A1306001106730F00000A1307001107026F1000000A0000DE0D11072C0811076F1100000A00DC11056F1200000A0B00DE0D11062C0811066F1100000A00DC00DE0D11052C0811056F1100000A00DC00DE0B092C07096F1100000A00DC07281300000A0C281400000A086F1500000A00281400000A6F1600000A002A0001340000020060000D6D000D00000000020056002F85000D00000000020049004C95000D0000000002000F0096A5000B000000002202281700000A002A00000042534A4201000100000000000C00000076342E302E33303331390000000005006C000000EC010000237E000058020000B002000023537472696E6773000000000805000044000000235553004C0500001000000023475549440000005C0500004C01000023426C6F620000000000000002000001471502000900000000FA01330016000001000000150000000200000002000000010000001700000004000000010000000100000002000000000029010100000000000600C10004020600E100040206009700ED010F002402000006004D0260010A00AB00BC0106000002930206007A0193020600530113000600460193020600A40113000600FF0060010600110164020600670193020600590113000600540093020600B101130006006500600106005C0260010A007002BC010A007A00BC01000000000A000000000001000100010010003302000015000100010050200000000096000401110101006021000000008618D701060002000000010054020900D70101001100D70106001900D7010A003100D701060039008A002200690001002700690044022C0071008B02320071002400320071008302380071001D0038007100DD013D004900D70106005100D70146005900D701500089009100560091008200060049007B02380099001A015B00A10071006100A9004F005600A900400006002900D70106002000230047012E000B0016012E0013001F012E001B003E011000048000000000000000000000010000006F008B010000040000000000000000000000660037000000000004000000000000000000000066002B000000000000000000006765745F55544638003C4D6F64756C653E0053797374656D2E494F006765745F4956007365745F49560053797374656D2E44617461006D73636F726C69620053656E64526573756C7473456E640053656E640043727970746F53747265616D4D6F64650049446973706F7361626C65006765745F506970650053716C5069706500446973706F7365004372656174650057726974650044656275676761626C654174747269627574650053716C50726F63656475726541747472696275746500436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C697479417474726962757465004279746500456E637279707456616C756500456E636F64696E6700546F426173653634537472696E67004578706F7274456E6372797074696E6746756E6374696F6E2E646C6C0043727970746F53747265616D004D656D6F727953747265616D0053797374656D0053796D6D6574726963416C676F726974686D004943727970746F5472616E73666F726D004578706F7274456E6372797074696E6746756E6374696F6E0053747265616D5772697465720054657874577269746572004D6963726F736F66742E53716C5365727665722E536572766572002E63746F7200437265617465456E63727970746F720053797374656D2E446961676E6F7374696373004165730053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300446562756767696E674D6F6465730053746F72656450726F63656475726573004765744279746573004F626A65637400636F6E74656E7400436F6E766572740053797374656D2E546578740053716C436F6E7465787400546F4172726179006765745F4B6579007365745F4B65790053797374656D2E53656375726974792E43727970746F6772617068790000416200310034006300610035003800390038006100340065003400310033003300620062006300650032006500610032003300310035006100310039003100360000007469B4FA019B474A9C80720587A3C9F8000420010108032000010520010111111107081D051D050E121D122112251229122D040000121D04000012350520011D050E052001011D050420001D0508200212211D051D0509200301123D1221114105200101123D042001010E0500010E1D05040000125508B77A5C561934E08980A00024000004800000940000000602000000240000525341310004000001000100D990EB171C1F1ECDA50448F909003BCB821A3871B32991102B0A4D548CE7692B92A29F0202C782F7EDFAA5743D4D10ADACF796AF6238CB97527E1959EBD1BB61930A5C02D8CBFD2AB88FD740CEF7145615EE916072837B4B358AD14A998EF5F905D0304AD355ED522A179C82666E9264668D3D7C2E8D00F6B984E29769991EA1040001010E0801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F7773010801000701000000000401000000CA83CC0F300C947F21F9FB8B0C92A1323E6616A9D8C9580A51E23B5332D5432339A03E9F6081B30F6E356D22A347B88BA3B6F75B40C8B04B7FBFFD2FAB00F79B51BAC289DEB5D7C1CF5CB4ED808DA78A4F831AA34E9618D059947CFB5838235A4C1F834B7C5B0BE81BC0D5E2861E3AE60F10C93398804AA01A3A5B04E38A1B8700000000618C315E00000000020000001C010000B0280000B00A0000525344539D0B4053DC7A7E4FABADAE1DB44F81D801000000463A5C576F726B735C546F6C746563685C746F6C746563685F706F727461696C5F62726573745C50726F6A6563745C4D61696E5C4578706F7274456E6372797074696E6746756E6374696F6E5C6F626A5C44656275675C4578706F7274456E6372797074696E6746756E6374696F6E2E70646200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F429000000000000000000000E2A0000002000000000000000000000000000000000000000000000002A0000000000000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF25002000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000018000080000000000000000000000000000001000100000030000080000000000000000000000000000001000000000048000000584000008C02000000000000000000008C0234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100000000000000000000000000000000003F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B004EC010000010053007400720069006E006700460069006C00650049006E0066006F000000C801000001003000300030003000300034006200300000002C0002000100460069006C0065004400650073006300720069007000740069006F006E000000000020000000300008000100460069006C006500560065007200730069006F006E000000000030002E0030002E0030002E00300000005A001D00010049006E007400650072006E0061006C004E0061006D00650000004500780070006F007200740045006E006300720079007000740069006E006700460075006E006300740069006F006E002E0064006C006C00000000002800020001004C006500670061006C0043006F00700079007200690067006800740000002000000062001D0001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000004500780070006F007200740045006E006300720079007000740069006E006700460075006E006300740069006F006E002E0064006C006C0000000000340008000100500072006F006400750063007400560065007200730069006F006E00000030002E0030002E0030002E003000000038000800010041007300730065006D0062006C0079002000560065007200730069006F006E00000030002E0030002E0030002E00300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000C000000203A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
DECLARE @clrDescription nvarchar(4000) = N’ExportEncryptingFunction, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil’;
DECLARE @hash varbinary(64);
SET @hash = HASHBYTES(‘SHA2_512’, @clrBin);
SELECT @hash;
EXECUTE sys.sp_add_trusted_assembly @hash, @clrDescription
Paramètre retour d’une procédure stockée
Se pose alors la question des paramètres Out sur une procédure stockée ?
Nous avons deux choix :
Soit avec le paramètre OUT
Un de nos paramètres est alors récupérable.
Soit avec la possibilité d’écrire un message en sortie, visible dans la fenêtre de sortie de SSMS.
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/clr-stored-procedures?redirectedfrom=MSDN
https://docs.microsoft.com/fr-fr/sql/database-engine/dev-guide/clr-stored-procedures?view=sql-server-2014
Or ce n’est pas ce que l’on veut en fait.
Nous, ce que l’on souhaite, c’est d’utiliser notre procédure dans notre requête SQL.
Donc en fait on ne veut pas créer une procédure stockée, mais une fonction CLR !
Création d’une fonction SQL CLR
C’est dans les options d’ajout de fichier dans notre projet SQL depuis Visual Studio que nous allons pouvoir créer une fonction CLR.
Il suffit de choisir Fonction CLR, comme dans l’image du début de cet article.
Code final
GO
SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;
SET NUMERIC_ROUNDABORT OFF;
EXEC sp_configure ‘show advanced options’, 1
RECONFIGURE;
EXEC sp_configure ‘clr strict security’, 0;
RECONFIGURE;
GO
:setvar DatabaseName « {{projet}} »
:setvar DefaultFilePrefix « {{projet}} »
:setvar DefaultDataPath « C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\ »
:setvar DefaultLogPath « C:\Program Files\Microsoft SQL Server\MSSQL14.SQLEXPRESS\MSSQL\DATA\ »
GO
:on error exit
GO
/*
Détectez le mode SQLCMD et désactivez l’exécution du script si le mode SQLCMD n’est pas pris en charge.
Pour réactiver le script une fois le mode SQLCMD activé, exécutez ce qui suit :
SET NOEXEC OFF;
*/
:setvar __IsSqlCmdEnabled « True »
GO
IF N’$(__IsSqlCmdEnabled)’ NOT LIKE N’True’
BEGIN
PRINT N’Le mode SQLCMD doit être activé de manière à pouvoir exécuter ce script.’;
SET NOEXEC ON;
END
GO
USE [$(DatabaseName)];
GO
PRINT N’Création de [ExportEncryptingFunction]…’;
DECLARE @clrBin varbinary(max) = 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C010300E18D315E0000000000000000E00022200B013000000C00000006000000000000FE2900000020000000400000000000100020000000020000040000000000000006000000000000000080000000020000BBF20000030060850000100000100000000010000010000000000000100000000000000000000000AC2900004F00000000400000E802000000000000000000000000000000000000006000000C000000742800001C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E74657874000000040A000000200000000C000000020000000000000000000000000000200000602E72737263000000E80200000040000000040000000E0000000000000000000000000000400000402E72656C6F6300000C0000000060000000020000001200000000000000000000000000004000004200000000000000000000000000000000E0290000000000004800000002000500602100009406000009000000000000000000000000000000F42700008000000000000000000000000000000000000000000000000000000000000000000000001B300300C400000001000011001F108D0C0000010A280500000A0D0009280600000A72010000706F0700000A6F0800000A0009066F0900000A0009096F0A00000A096F0B00000A6F0C00000A1304730D00000A1305001105110417730E00000A1306001106730F00000A1307001107026F1000000A0000DE0D11072C0811076F1100000A00DC11056F1200000A0B00DE0D11062C0811066F1100000A00DC00DE0D11052C0811056F1100000A00DC00DE0B092C07096F1100000A00DC07281300000A0C281400000A086F1500000A002A01340000020060000D6D000D00000000020056002F85000D00000000020049004C95000D0000000002000F0096A5000B000000002202281600000A002A00000042534A4201000100000000000C00000076342E302E33303331390000000005006C000000E4010000237E000050020000A402000023537472696E677300000000F4040000440000002355530038050000100000002347554944000000480500004C01000023426C6F620000000000000002000001471502000900000000FA0133001600000100000015000000020000000200000001000000160000000400000001000000010000000200000000001A010100000000000600B200F5010600D200F50106008800DE010F001502000006003E0251010A009C00AD010600F101840206006B0184020600440113000600370184020600950113000600F000510106000201550206005801840206004A0113000600450084020600A201130006005600510106004D0251010A006102AD010A006B00AD01000000000A00000000000100010001001000240200001500010001005020000000009600F500110101005421000000008618C801060002000000010045020900C80101001100C80106001900C8010A003100C801060039007B002200690001002700690035022C0071007C02320071002400320071007402380071001D0038007100CE013D004900C80106005100C80146005900C801500089008200560091007300060049006C02380099000B015B00A10062006100A900400056002900C80106002000230047012E000B0016012E0013001F012E001B003E011000048000000000000000000000010000006F007C010000040000000000000000000000660037000000000004000000000000000000000066002B00000000000000006765745F55544638003C4D6F64756C653E0053797374656D2E494F006765745F4956007365745F49560053797374656D2E44617461006D73636F726C69620053656E640043727970746F53747265616D4D6F64650049446973706F7361626C65006765745F506970650053716C5069706500446973706F7365004372656174650057726974650044656275676761626C654174747269627574650053716C50726F63656475726541747472696275746500436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C697479417474726962757465004279746500456E637279707456616C756500456E636F64696E6700546F426173653634537472696E67004578706F7274456E6372797074696E6746756E6374696F6E2E646C6C0043727970746F53747265616D004D656D6F727953747265616D0053797374656D0053796D6D6574726963416C676F726974686D004943727970746F5472616E73666F726D004578706F7274456E6372797074696E6746756E6374696F6E0053747265616D5772697465720054657874577269746572004D6963726F736F66742E53716C5365727665722E536572766572002E63746F7200437265617465456E63727970746F720053797374656D2E446961676E6F7374696373004165730053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300446562756767696E674D6F6465730053746F72656450726F63656475726573004765744279746573004F626A65637400636F6E74656E7400436F6E766572740053797374656D2E546578740053716C436F6E7465787400546F4172726179006765745F4B6579007365745F4B65790053797374656D2E53656375726974792E43727970746F677261706879000000000041620031003400630061003500380039003800610034006500340031003300330062006200630065003200650061003200330031003500610031003900310036000000AC86D272CE4A864DB240BC62EDF195E3000420010108032000010520010111111107081D051D050E121D122112251229122D040000121D04000012350520011D050E052001011D050420001D0508200212211D051D0509200301123D1221114105200101123D042001010E0500010E1D05040000125508B77A5C561934E08980A00024000004800000940000000602000000240000525341310004000001000100D990EB171C1F1ECDA50448F909003BCB821A3871B32991102B0A4D548CE7692B92A29F0202C782F7EDFAA5743D4D10ADACF796AF6238CB97527E1959EBD1BB61930A5C02D8CBFD2AB88FD740CEF7145615EE916072837B4B358AD14A998EF5F905D0304AD355ED522A179C82666E9264668D3D7C2E8D00F6B984E29769991EA1040001010E0801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F7773010801000701000000000401000000685639B33F828D66C06DFE9F955C76B85F5DB633A612BE71580EDA68A3BD8A55E7DDE9778B30C7169266B9C4327B0F2E92661FA1FEDFC3646F65A99A290C05B823EEB5534B0D022E16A91F302D1F25075CDBFB71FB9AB826D175ECB42F3D07E1563323E3DB6F61086E622A61DB5722A0366AD0ADB03B17C2017ACAEFAA90763F00000000E18D315E00000000020000001C01000090280000900A000052534453A916F039A2E1C44CB7DF78B6703F6D5F01000000463A5C576F726B735C546F6C746563685C746F6C746563685F706F727461696C5F62726573745C50726F6A6563745C4D61696E5C4578706F7274456E6372797074696E6746756E6374696F6E5C6F626A5C44656275675C4578706F7274456E6372797074696E6746756E6374696F6E2E70646200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D42900000000000000000000EE290000002000000000000000000000000000000000000000000000E0290000000000000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF250020001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000018000080000000000000000000000000000001000100000030000080000000000000000000000000000001000000000048000000584000008C02000000000000000000008C0234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100000000000000000000000000000000003F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B004EC010000010053007400720069006E006700460069006C00650049006E0066006F000000C801000001003000300030003000300034006200300000002C0002000100460069006C0065004400650073006300720069007000740069006F006E000000000020000000300008000100460069006C006500560065007200730069006F006E000000000030002E0030002E0030002E00300000005A001D00010049006E007400650072006E0061006C004E0061006D00650000004500780070006F007200740045006E006300720079007000740069006E006700460075006E006300740069006F006E002E0064006C006C00000000002800020001004C006500670061006C0043006F00700079007200690067006800740000002000000062001D0001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000004500780070006F007200740045006E006300720079007000740069006E006700460075006E006300740069006F006E002E0064006C006C0000000000340008000100500072006F006400750063007400560065007200730069006F006E00000030002E0030002E0030002E003000000038000800010041007300730065006D0062006C0079002000560065007200730069006F006E00000030002E0030002E0030002E00300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000C000000003A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
DECLARE @clrDescription nvarchar(4000) = N’ExportEncryptingFunction, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil’;
DECLARE @hash varbinary(64);
SET @hash = HASHBYTES(‘SHA2_512’, @clrBin);
SELECT @hash;
EXECUTE sys.sp_add_trusted_assembly @hash, @clrDescription
GO
CREATE ASSEMBLY [ExportEncryptingFunction]
AUTHORIZATION [dbo]
FROM 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C010300E18D315E0000000000000000E00022200B013000000C00000006000000000000FE2900000020000000400000000000100020000000020000040000000000000006000000000000000080000000020000BBF20000030060850000100000100000000010000010000000000000100000000000000000000000AC2900004F00000000400000E802000000000000000000000000000000000000006000000C000000742800001C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E74657874000000040A000000200000000C000000020000000000000000000000000000200000602E72737263000000E80200000040000000040000000E0000000000000000000000000000400000402E72656C6F6300000C0000000060000000020000001200000000000000000000000000004000004200000000000000000000000000000000E0290000000000004800000002000500602100009406000009000000000000000000000000000000F42700008000000000000000000000000000000000000000000000000000000000000000000000001B300300C400000001000011001F108D0C0000010A280500000A0D0009280600000A72010000706F0700000A6F0800000A0009066F0900000A0009096F0A00000A096F0B00000A6F0C00000A1304730D00000A1305001105110417730E00000A1306001106730F00000A1307001107026F1000000A0000DE0D11072C0811076F1100000A00DC11056F1200000A0B00DE0D11062C0811066F1100000A00DC00DE0D11052C0811056F1100000A00DC00DE0B092C07096F1100000A00DC07281300000A0C281400000A086F1500000A002A01340000020060000D6D000D00000000020056002F85000D00000000020049004C95000D0000000002000F0096A5000B000000002202281600000A002A00000042534A4201000100000000000C00000076342E302E33303331390000000005006C000000E4010000237E000050020000A402000023537472696E677300000000F4040000440000002355530038050000100000002347554944000000480500004C01000023426C6F620000000000000002000001471502000900000000FA0133001600000100000015000000020000000200000001000000160000000400000001000000010000000200000000001A010100000000000600B200F5010600D200F50106008800DE010F001502000006003E0251010A009C00AD010600F101840206006B0184020600440113000600370184020600950113000600F000510106000201550206005801840206004A0113000600450084020600A201130006005600510106004D0251010A006102AD010A006B00AD01000000000A00000000000100010001001000240200001500010001005020000000009600F500110101005421000000008618C801060002000000010045020900C80101001100C80106001900C8010A003100C801060039007B002200690001002700690035022C0071007C02320071002400320071007402380071001D0038007100CE013D004900C80106005100C80146005900C801500089008200560091007300060049006C02380099000B015B00A10062006100A900400056002900C80106002000230047012E000B0016012E0013001F012E001B003E011000048000000000000000000000010000006F007C010000040000000000000000000000660037000000000004000000000000000000000066002B00000000000000006765745F55544638003C4D6F64756C653E0053797374656D2E494F006765745F4956007365745F49560053797374656D2E44617461006D73636F726C69620053656E640043727970746F53747265616D4D6F64650049446973706F7361626C65006765745F506970650053716C5069706500446973706F7365004372656174650057726974650044656275676761626C654174747269627574650053716C50726F63656475726541747472696275746500436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C697479417474726962757465004279746500456E637279707456616C756500456E636F64696E6700546F426173653634537472696E67004578706F7274456E6372797074696E6746756E6374696F6E2E646C6C0043727970746F53747265616D004D656D6F727953747265616D0053797374656D0053796D6D6574726963416C676F726974686D004943727970746F5472616E73666F726D004578706F7274456E6372797074696E6746756E6374696F6E0053747265616D5772697465720054657874577269746572004D6963726F736F66742E53716C5365727665722E536572766572002E63746F7200437265617465456E63727970746F720053797374656D2E446961676E6F7374696373004165730053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300446562756767696E674D6F6465730053746F72656450726F63656475726573004765744279746573004F626A65637400636F6E74656E7400436F6E766572740053797374656D2E546578740053716C436F6E7465787400546F4172726179006765745F4B6579007365745F4B65790053797374656D2E53656375726974792E43727970746F677261706879000000000041620031003400630061003500380039003800610034006500340031003300330062006200630065003200650061003200330031003500610031003900310036000000AC86D272CE4A864DB240BC62EDF195E3000420010108032000010520010111111107081D051D050E121D122112251229122D040000121D04000012350520011D050E052001011D050420001D0508200212211D051D0509200301123D1221114105200101123D042001010E0500010E1D05040000125508B77A5C561934E08980A00024000004800000940000000602000000240000525341310004000001000100D990EB171C1F1ECDA50448F909003BCB821A3871B32991102B0A4D548CE7692B92A29F0202C782F7EDFAA5743D4D10ADACF796AF6238CB97527E1959EBD1BB61930A5C02D8CBFD2AB88FD740CEF7145615EE916072837B4B358AD14A998EF5F905D0304AD355ED522A179C82666E9264668D3D7C2E8D00F6B984E29769991EA1040001010E0801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F7773010801000701000000000401000000685639B33F828D66C06DFE9F955C76B85F5DB633A612BE71580EDA68A3BD8A55E7DDE9778B30C7169266B9C4327B0F2E92661FA1FEDFC3646F65A99A290C05B823EEB5534B0D022E16A91F302D1F25075CDBFB71FB9AB826D175ECB42F3D07E1563323E3DB6F61086E622A61DB5722A0366AD0ADB03B17C2017ACAEFAA90763F00000000E18D315E00000000020000001C01000090280000900A000052534453A916F039A2E1C44CB7DF78B6703F6D5F01000000463A5C576F726B735C546F6C746563685C746F6C746563685F706F727461696C5F62726573745C50726F6A6563745C4D61696E5C4578706F7274456E6372797074696E6746756E6374696F6E5C6F626A5C44656275675C4578706F7274456E6372797074696E6746756E6374696F6E2E70646200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D42900000000000000000000EE290000002000000000000000000000000000000000000000000000E0290000000000000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF250020001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001001000000018000080000000000000000000000000000001000100000030000080000000000000000000000000000001000000000048000000584000008C02000000000000000000008C0234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100000000000000000000000000000000003F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B004EC010000010053007400720069006E006700460069006C00650049006E0066006F000000C801000001003000300030003000300034006200300000002C0002000100460069006C0065004400650073006300720069007000740069006F006E000000000020000000300008000100460069006C006500560065007200730069006F006E000000000030002E0030002E0030002E00300000005A001D00010049006E007400650072006E0061006C004E0061006D00650000004500780070006F007200740045006E006300720079007000740069006E006700460075006E006300740069006F006E002E0064006C006C00000000002800020001004C006500670061006C0043006F00700079007200690067006800740000002000000062001D0001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000004500780070006F007200740045006E006300720079007000740069006E006700460075006E006300740069006F006E002E0064006C006C0000000000340008000100500072006F006400750063007400560065007200730069006F006E00000030002E0030002E0030002E003000000038000800010041007300730065006D0062006C0079002000560065007200730069006F006E00000030002E0030002E0030002E00300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000C000000003A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
WITH PERMISSION_SET = UNSAFE;
GO
ALTER ASSEMBLY [ExportEncryptingFunction]
DROP FILE ALL
ADD FILE FROM 0x4D6963726F736F667420432F432B2B204D534620372E30300D0A1A44530000000002000002000000170000007C0000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF380080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BCA3101380000000010000000100000000000000E00FFFF04000000FFFF03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BCA3101380000000010000000100000000000000F00FFFF04000000FFFF0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000942E3101E18D315E01000000A916F039A2E1C44CB7DF78B6703F6D5F00000000000000000100000001000000000000000000000000000000DC51330100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BCA310138000000001000000010000000000000FFFFFFFF04000000FFFF030000000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BCA310138000000001000000010000000000000FFFFFFFF04000000FFFF030000000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F862513FC607D311905300C04FA302A1C4454B99E9E6D211903F00C04FA302A10B9D865A1166D311BD2A0000F80849BD0FD02988B8111342878B770E8597AC162000000000000000540DBE2040A4DCC276640C13634283EB6F318B5A1BC56543BD8F5EB92254BBC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C400000000000000C4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FEEFFEEF01000000CA00000000463A5C576F726B735C546F6C746563685C746F6C746563685F706F727461696C5F62726573745C50726F6A6563745C4D61696E5C4578706F7274456E6372797074696E6746756E6374696F6E5C53716C53746F72656450726F636564757265312E63730000663A5C776F726B735C746F6C746563685C746F6C746563685F706F727461696C5F62726573745C70726F6A6563745C6D61696E5C6578706F7274656E6372797074696E6766756E6374696F6E5C73716C73746F72656470726F636564757265312E637300040000000100000065000000660000000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001BE2300180000000F58F4735ABD6D501010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000200000001000000010000000000000066000000280000001BE23001DD27EA7E680000000100000065000000660000006500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000036002A1100000000EC02000000000000C4000000000000000000000001000006000000000100000000456E637279707456616C7565000000160003110400000098020000C400000000000000010000000A0024115553797374656D00120024115553797374656D2E44617461000000001A0024115553797374656D2E446174612E53716C436C69656E7400001A0024115553797374656D2E446174612E53716C54797065730000000E0024115553797374656D2E494F0000220024115553797374656D2E53656375726974792E43727970746F677261706879000000120024115553797374656D2E54657874000000001E002411554D6963726F736F66742E53716C5365727665722E536572766572001600201100000000010000110000000000000000697600001A0020110100000001000011000000000000000061727261790000001E0020110200000001000011000000000000000072657475726E56616C756500160003113C00000094020000A70000000900000001000000160020110300000001000011000000000000000061657300160003116801000090020000940000000F000000010000001E00201104000000010000110000000000000000656E63727970746F7200000016000311980100008C02000060000000420000000100000022002011050000000100001100000000000000006D656D6F727953747265616D0000000016000311D001000088020000480000004A00000001000000220020110600000001000011000000000000000063727970746F53747265616D00000000160003110C02000084020000230000005700000001000000220020110700000001000011000000000000000073747265616D577269746572000000000200060002000600020006000200060002000600020006004E000404C93FEAC6B359D649BC250902BBABB460000000004D0044003200000004020000040000000C0000000100080004060003200000000113013601834C01510180FB01814E0181A501823B00000002000600F2000000800100000000000001000100C4000000000000001E00000074010000000000000E000080010000000F00008009000000110000800F00000012000080100000001300008026000000140000802E00000015000080420000001600008049000000170000804A000000180000805600000019000080570000001A000080600000001B000080610000001C0000806A0000001D0000806D000000EEEFFE8079000000EEEFFE807A0000001F000080820000002000008085000000EEEFFE8091000000EEEFFE80920000002100008095000000EEEFFE80A1000000EEEFFE80A200000022000080A5000000EEEFFE80AF000000EEEFFE80B000000024000080B700000026000080C30000002700008005000600090022001000260009000A000D0052000D0019000D004F00140042000D000E0018007D00110012001C005E001500160019003500150016000000000000000000150034001100120000000000000000000D000E00000000000000000009000A00000000000000000009003E0009002B0005000600F400000008000000010000000000000008000000000000001C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF1A092FF1100000000C0200001D000000010000000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A00251100000000040000000100456E637279707456616C756500001600291100000000040000000100303630303030303100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000FFFFFFFF1A092FF10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF77093101010000000B000C8E0C00E6640D0002005C000000200000002C00000070000000000000000000000016000000190000000000EEC00000000000000000FFFF000000000000FFFFFFFF00000000FFFF0000000000000000000000000A00F002000000000000980100000100000000000000000000000000000053746F72656450726F636564757265730043444135313336460000002DBA2EF10100000000000000C400000000000000000000000000000000000000020002000D01000000000100FFFFFFFF00000000C40000000802000000000000FFFFFFFF00000000FFFFFFFF010001000000010000000000463A5C576F726B735C546F6C746563685C746F6C746563685F706F727461696C5F62726573745C50726F6A6563745C4D61696E5C4578706F7274456E6372797074696E6746756E6374696F6E5C53716C53746F72656450726F636564757265312E637300FEEFFEEF010000000100000000010000000000000000000000FFFFFFFFFFFFFFFFFFFF0900FFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000942E3101E18D315E01000000A916F039A2E1C44CB7DF78B6703F6D5F910000002F4C696E6B496E666F002F6E616D6573002F7372632F686561646572626C6F636B002F7372632F66696C65732F663A5C776F726B735C746F6C746563685C746F6C746563685F706F727461696C5F62726573745C70726F6A6563745C6D61696E5C6578706F7274656E6372797074696E6766756E6374696F6E5C73716C73746F72656470726F636564757265312E6373000400000006000000010000003A0000000000000011000000070000000A000000060000000000000005000000220000000800000000000000DC51330100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E00000020000000ED00000038000000870100003800000000000000EE000000800000006800000028000000940400002C0200002C0000003400000003000000140000000600000013000000070000000A0000000B00000008000000090000000C0000000D0000000E0000000F000000100000001200000011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 AS N’ExportEncryptingFunction.pdb’;
GO
PRINT N’Création de [dbo].[EncryptValue]…’;
GO
CREATE PROCEDURE [dbo].[EncryptValue]
@content NVARCHAR (MAX)
AS EXTERNAL NAME [ExportEncryptingFunction].[StoredProcedures].[EncryptValue]
GO
PRINT N’Mise à jour terminée.’;
GO