Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- --------- TEST 2 FOR SQLCLR on SQL Server 2017 (Windows and Linux) ---------
- By: Solomon Rutzky
- On: 2017-08-10
- Location: https://pastebin.com/2nw9Kyfe
- Related blog post: https://SqlQuantumLeap.com/2017/08/16/sqlclr-vs-sql-server-2017-part-3-clr-strict-security-solution-2/
- Description: This script shows a technique for deploying SQLCLR Assemblies to SQLCLR 2017
- while both keeping "clr strict security" enabled and "TRUSTWORTHY" disabled,
- AND while being fulled contained within a SQL script, AND working with SSDT.
- The trick is to override the default SSDT build process to add a step to sign
- the DLL with a certificate before the DLL is pulled into a deployment script.
- For a detailed, step-by-step explanation, please see the relatd blog post
- noted above.
- */
- USE [master];
- SET NOCOUNT ON;
- GO
- IF (DB_ID(N'SQLCLRvsClrStrictSecurity') IS NULL)
- BEGIN
- PRINT 'Creating Database...';
- CREATE DATABASE [SQLCLRvsClrStrictSecurity]
- COLLATE Latin1_General_100_CI_AS;
- END;
- IF (DB_ID(N'SQLCLRvsClrStrictSecurity') IS NOT NULL)
- BEGIN
- PRINT 'Altering Database (make sure RECOVERY=SIMPLE and TRUSTWORTHY=OFF)...';
- ALTER DATABASE [SQLCLRvsClrStrictSecurity]
- SET RECOVERY SIMPLE,
- TRUSTWORTHY OFF;
- END;
- PRINT 'Making sure that SQLCLR is enabled...';
- IF (EXISTS(
- SELECT *
- FROM sys.configurations sc
- WHERE sc.[configuration_id] = 1562 -- "clr enabled"
- AND sc.[value_in_use] = 0
- ))
- BEGIN
- PRINT 'Enabling SQLCLR...';
- EXEC sp_configure N'clr enabled', 1; RECONFIGURE;
- END;
- PRINT 'Making sure that SQLCLR "strict security" is enabled...';
- IF (EXISTS(
- SELECT *
- FROM sys.configurations sc
- WHERE sc.[configuration_id] = 518 -- "show advanced options"
- AND sc.[value_in_use] = 0
- ))
- BEGIN
- PRINT ' Showing advanced options...';
- EXEC sp_configure N'show advanced options', 1; RECONFIGURE;
- END;
- IF (EXISTS(
- SELECT *
- FROM sys.configurations sc
- WHERE sc.[configuration_id] = 1587 -- "clr strict security"
- AND sc.[value_in_use] = 0
- ))
- BEGIN
- PRINT ' Enabling CLR strict security...';
- EXEC sp_configure N'clr strict security', 1; RECONFIGURE;
- END;
- IF (SUSER_ID(N'SQL2017-ClrStrictSecurity2-Login') IS NULL)
- BEGIN
- PRINT 'Permission Login does NOT exist:';
- IF (CERT_ID(N'SQL2017-ClrStrictSecurity2-Cert') IS NULL)
- BEGIN
- PRINT ' Creating Certificate...';
- CREATE CERTIFICATE [SQL2017-ClrStrictSecurity2-Cert]
- FROM BINARY = 0x\
- 3082037930820265A00302010202109BCC3B23A3549F9645D0A425322CF7FD300906052B0E03021D\
- 05003040310B3009060355040613025553311B3019060355040A131253716C5175616E74756D4C65\
- 61702E636F6D311430120603550403130B53514C434C5220436572743020170D3137303831383033\
- 313030345A180F32303939313233313034303030305A3040310B3009060355040613025553311B30\
- 19060355040A131253716C5175616E74756D4C6561702E636F6D311430120603550403130B53514C\
- 434C52204365727430820122300D06092A864886F70D01010105000382010F003082010A02820101\
- 00CCEA3F8D614CE7AB2B52E39301A9D9E2A7828473EC10D8748CF0BB32DDF6ED1423E56C0FC36DAA\
- 995D54BD7194BF3BC71B1931111706DF162ED5188017B0B570DDF9AFFD3E531E266BFADD02220253\
- 53277BAC965E89DB4645438A973256897E0D2644C24CB3C61AC0011FC7CDDFE06C1234C1C0A60158\
- 6952FF2033C58F8A519AD1D71B35A6975E1F846A83D1F90D1602A372CC8EB697240E9E38852BBB96\
- CB78FE296B57DE401AAFD958EDDF59894E8C0A42B95A77BE43C1B893CE312824B68C931F9893639A\
- 41BF99E68AD6F2AA2AEC58AA5CC067EF8FF0AD7BE9A1AA44B48F8338BBD324C2D162DA30356FD461\
- BF2FD388EDDFDD5990682379EF18A33C4D0203010001A375307330710603551D01046A30688010B7\
- C292D45B0F3FDDBF55241F2FD6F2CFA1423040310B3009060355040613025553311B301906035504\
- 0A131253716C5175616E74756D4C6561702E636F6D311430120603550403130B53514C434C522043\
- 65727482109BCC3B23A3549F9645D0A425322CF7FD300906052B0E03021D050003820101006AF2D8\
- F382D55034DE7715B0F5536669914C6B256344B7343B0B099B32B4759E77B367CA19A3B3FBC7DBCF\
- 913FB022DD5D4F83EB6792D58B63AF015767F0BC059D24D3E019880A95DEA9E72BD462302806CF9B\
- FB1C9A3E3BAC4D612889ACF4839AC0FE7F60625FA33DABA6F0FCD6EBF88401712EF3DA505092CBB5\
- ACCDC510258F3003868DC15C0E5374B01E6BF555972E3F99C789F1E14B171CE508D895CDD71AB6FD\
- 8D9F61962A3E1D89E0E748E3C5505AF21E0DF6D95FEA86E87D5DED7D00A669FC8CAB472A93F993BB\
- B21636AEDE56F747E11FCF69F96D4C87732C5BE3780E01C772F3BD0938DD5A440BDCC84680839572\
- 8AF10C95C6F8E6714DDAFA19B2
- END;
- IF (SUSER_ID(N'SQL2017-ClrStrictSecurity2-Login') IS NULL)
- BEGIN
- PRINT ' Creating permissions Login...';
- CREATE LOGIN [SQL2017-ClrStrictSecurity2-Login]
- FROM CERTIFICATE [SQL2017-ClrStrictSecurity2-Cert];
- END;
- END;
- -- REVOKE UNSAFE ASSEMBLY FROM [SQL2017-ClrStrictSecurity2-Login];
- GRANT UNSAFE ASSEMBLY TO [SQL2017-ClrStrictSecurity2-Login]; -- REQUIRED!!!!
- --DROP LOGIN [SQL2017-ClrStrictSecurity2-Login];
- --DROP CERTIFICATE [SQL2017-ClrStrictSecurity2-Cert];
- -- Verify that "clr strict security" is 1 (i.e. ON), and that TRUSTWORTHY is 0 (i.e. OFF):
- SELECT *
- FROM sys.configurations sc
- WHERE sc.[configuration_id] = 1587 -- "clr strict security"
- SELECT [name], [is_trustworthy_on], [collation_name]
- FROM sys.databases WHERE [database_id] = DB_ID(N'SQLCLRvsClrStrictSecurity');
- GO
- USE [SQLCLRvsClrStrictSecurity];
- -- DROP FUNCTION [dbo].[String_PadLeft];
- -- DROP ASSEMBLY [SQL2017_ClrStrictSecurity2];
- IF (ASSEMBLYPROPERTY(N'SQL2017_ClrStrictSecurity2', N'MvID') IS NULL)
- BEGIN
- PRINT 'Creating [SQL2017_ClrStrictSecurity2] Assembly...';
- CREATE ASSEMBLY [SQL2017_ClrStrictSecurity2]
- AUTHORIZATION [dbo]
- FROM 0x\
- 4D5A90000300000004000000FFFF0000B80000000000000040000000000000000000000000000000\
- 0000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD215468\
- 69732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A\
- 2400000000000000504500004C01030082F498590000000000000000E00002210B010B00000A0000\
- 0008000000000000CE28000000200000004000000000001000200000000200000400000000000000\
- 06000000000000000080000000020000247B00000300608500001000001000000000100000100000\
- 00000000100000000000000000000000802800004B00000000400000980400000000000000000000\
- 00140000D8050000006000000C000000482700001C00000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000200000080000000000000000000000\
- 082000004800000000000000000000002E74657874000000D408000000200000000A000000020000\
- 000000000000000000000000200000602E72737263000000980400000040000000060000000C0000\
- 000000000000000000000000400000402E72656C6F6300000C000000006000000002000000120000\
- 0000000000000000000000004000004200000000000000000000000000000000B028000000000000\
- 48000000020005007C200000CC060000010000000000000000000000000000000000000000000000\
- 0000000000000000000000000000000000000000000000000000000000000000860F00280F00000A\
- 0F02281000000A03166A6F1100000A6F1200000A731300000A2A1E02281400000A2A000042534A42\
- 01000100000000000C00000076342E302E33303331390000000005006C00000008020000237E0000\
- 74020000E402000023537472696E6773000000005805000008000000235553006005000010000000\
- 2347554944000000700500005C01000023426C6F6200000000000000020000014715000009000000\
- 00FA2533001600000100000014000000020000000200000003000000140000000C00000001000000\
- 0200000000000A0001000000000006004E0047000A00760061000A00800061000A00890061000600\
- D700C5000600EE00C50006000B01C50006002A01C50006004301C50006005C01C50006007701C500\
- 06009201C5000600AB01C5000600C401C5000600F401E1013F000802000006003702170206005702\
- 17020A00AB0290020600D30247000000000001000000000001000100010010002900000005000100\
- 0100502000000000960092000A0001007220000000008618A1001500040000000100A70000000200\
- B30000000300BB002900A10019003100A10019003900A10019004100A10019004900A10019005100\
- A10019005900A10019006100A10019006900A10019007100A10019007900A1001E008900A1002400\
- 9100A10015009900A10015001100C00241002100C00245001900CA024900A100DA024E001100A100\
- 19000900A10015002000730029002E002B00B5002E00130074002E001B0099002E0023009F002E00\
- 0B0054002E003300E1002E003B0099002E0053001D012E005B002A012E00630033012E006B003C01\
- 0480000002000600070000000000000000007502000004000000000000000000000001003E000000\
- 000004000000000000000000000001005500000000000000003C4D6F64756C653E0053514C323031\
- 375F436C725374726963745365637572697479322E646C6C0055736572446566696E656446756E63\
- 74696F6E73006D73636F726C69620053797374656D004F626A6563740053797374656D2E44617461\
- 0053797374656D2E446174612E53716C54797065730053716C537472696E670053716C4368617273\
- 0053716C496E74333200537472696E675F5061644C656674002E63746F7200496E70757453747269\
- 6E67005061644368617200506164416D6F756E740053797374656D2E5265666C656374696F6E0041\
- 7373656D626C795469746C6541747472696275746500417373656D626C794465736372697074696F\
- 6E41747472696275746500417373656D626C79436F6E66696775726174696F6E4174747269627574\
- 6500417373656D626C79436F6D70616E7941747472696275746500417373656D626C7950726F6475\
- 637441747472696275746500417373656D626C79436F707972696768744174747269627574650041\
- 7373656D626C7954726164656D61726B41747472696275746500417373656D626C7943756C747572\
- 6541747472696275746500417373656D626C7956657273696F6E4174747269627574650041737365\
- 6D626C7946696C6556657273696F6E4174747269627574650053797374656D2E446961676E6F7374\
- 6963730044656275676761626C6541747472696275746500446562756767696E674D6F6465730053\
- 797374656D2E52756E74696D652E436F6D70696C6572536572766963657300436F6D70696C617469\
- 6F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C\
- 6974794174747269627574650053514C323031375F436C7253747269637453656375726974793200\
- 4D6963726F736F66742E53716C5365727665722E5365727665720053716C46756E6374696F6E4174\
- 74726962757465006765745F56616C7565006765745F4974656D00537472696E67005061644C6566\
- 740000000003200000000000F41C3A78FF4C4A49B5F1F9B95DE8B0F70008B77A5C561934E0890A00\
- 0311091109120D111103200001042001010E0520010111410420010108170100010054020F497344\
- 657465726D696E6973746963010320000E03200008042001030A0520020E08031F01001A53514C32\
- 3031375F436C7253747269637453656375726974793200002401001F68747470733A2F2F53716C51\
- 75616E74756D4C6561702E636F6D2F3230313700000501000000001501001053716C205175616E74\
- 756D204C65617000002B01002653514C20536572766572203230313720767320434C522073747269\
- 637420736563757269747900003B010036436F7079726967687420286329203230313720536F6C6F\
- 6D6F6E2052757A6B792E20416C6C207269676874732072657365727665642E00000C010007332E38\
- 2E392E3000000801000200000000000801000800000000001E01000100540216577261704E6F6E45\
- 7863657074696F6E5468726F777301000000000082F4985900000000020000001C01000064270000\
- 64090000525344535AC21935AE54774C9B9CF9BD052243AB08000000633A5C53514C5175616E7475\
- 6D4C6561705C50726F6A656374735C426C6F67546F706963735C313830335C53514C323031375F43\
- 6C725374726963745365637572697479325C53514C323031375F436C725374726963745365637572\
- 697479325C6F626A5C52656C656173655C53514C323031375F436C72537472696374536563757269\
- 7479322E706462000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 0000000000000000A82800000000000000000000BE28000000200000000000000000000000000000\
- 0000000000000000B02800000000000000005F436F72446C6C4D61696E006D73636F7265652E646C\
- 6C0000000000FF250020001000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000001001000000018000080000000000000000000000000000001000100000030000080\
- 00000000000000000000000000000100000000004800000058400000400400000000000000000000\
- 400434000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000\
- BD04EFFE00000100080003000000090008000300000009003F000000000000000400000002000000\
- 000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00\
- 000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B004\
- A0030000010053007400720069006E006700460069006C00650049006E0066006F0000007C030000\
- 010030003000300030003000340062003000000058002000010043006F006D006D0065006E007400\
- 73000000680074007400700073003A002F002F00530071006C005100750061006E00740075006D00\
- 4C006500610070002E0063006F006D002F003200300031003700000044001100010043006F006D00\
- 700061006E0079004E0061006D00650000000000530071006C0020005100750061006E0074007500\
- 6D0020004C006500610070000000000060001B000100460069006C00650044006500730063007200\
- 69007000740069006F006E0000000000530051004C0032003000310037005F0043006C0072005300\
- 74007200690063007400530065006300750072006900740079003200000000003000080001004600\
- 69006C006500560065007200730069006F006E000000000033002E0038002E0039002E0030000000\
- 60001F00010049006E007400650072006E0061006C004E0061006D0065000000530051004C003200\
- 3000310037005F0043006C0072005300740072006900630074005300650063007500720069007400\
- 790032002E0064006C006C00000000009400370001004C006500670061006C0043006F0070007900\
- 72006900670068007400000043006F00700079007200690067006800740020002800630029002000\
- 3200300031003700200053006F006C006F006D006F006E002000520075007A006B0079002E002000\
- 41006C006C0020007200690067006800740073002000720065007300650072007600650064002E00\
- 0000000068001F0001004F0072006900670069006E0061006C00460069006C0065006E0061006D00\
- 65000000530051004C0032003000310037005F0043006C0072005300740072006900630074005300\
- 650063007500720069007400790032002E0064006C006C0000000000700027000100500072006F00\
- 64007500630074004E0061006D00650000000000530051004C002000530065007200760065007200\
- 20003200300031003700200076007300200043004C00520020007300740072006900630074002000\
- 7300650063007500720069007400790000000000340008000100500072006F006400750063007400\
- 560065007200730069006F006E00000033002E0038002E0039002E00300000003800080001004100\
- 7300730065006D0062006C0079002000560065007200730069006F006E00000032002E0036002E00\
- 37002E00300000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 0000000000000000002000000C000000D03800000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000\
- D805000000020200308205C506092A864886F70D010702A08205B6308205B2020101310B30090605\
- 2B0E03021A0500304C060A2B060104018237020104A03E303C3017060A2B06010401823702010F30\
- 09030100A004A20280003021300906052B0E03021A0500041443D232A77578792F67D9469EBEE29E\
- B6D88FF59AA082037D3082037930820265A00302010202109BCC3B23A3549F9645D0A425322CF7FD\
- 300906052B0E03021D05003040310B3009060355040613025553311B3019060355040A131253716C\
- 5175616E74756D4C6561702E636F6D311430120603550403130B53514C434C522043657274302017\
- 0D3137303831383033313030345A180F32303939313233313034303030305A3040310B3009060355\
- 040613025553311B3019060355040A131253716C5175616E74756D4C6561702E636F6D3114301206\
- 03550403130B53514C434C52204365727430820122300D06092A864886F70D01010105000382010F\
- 003082010A0282010100CCEA3F8D614CE7AB2B52E39301A9D9E2A7828473EC10D8748CF0BB32DDF6\
- ED1423E56C0FC36DAA995D54BD7194BF3BC71B1931111706DF162ED5188017B0B570DDF9AFFD3E53\
- 1E266BFADD0222025353277BAC965E89DB4645438A973256897E0D2644C24CB3C61AC0011FC7CDDF\
- E06C1234C1C0A601586952FF2033C58F8A519AD1D71B35A6975E1F846A83D1F90D1602A372CC8EB6\
- 97240E9E38852BBB96CB78FE296B57DE401AAFD958EDDF59894E8C0A42B95A77BE43C1B893CE3128\
- 24B68C931F9893639A41BF99E68AD6F2AA2AEC58AA5CC067EF8FF0AD7BE9A1AA44B48F8338BBD324\
- C2D162DA30356FD461BF2FD388EDDFDD5990682379EF18A33C4D0203010001A37530733071060355\
- 1D01046A30688010B7C292D45B0F3FDDBF55241F2FD6F2CFA1423040310B30090603550406130255\
- 53311B3019060355040A131253716C5175616E74756D4C6561702E636F6D31143012060355040313\
- 0B53514C434C52204365727482109BCC3B23A3549F9645D0A425322CF7FD300906052B0E03021D05\
- 0003820101006AF2D8F382D55034DE7715B0F5536669914C6B256344B7343B0B099B32B4759E77B3\
- 67CA19A3B3FBC7DBCF913FB022DD5D4F83EB6792D58B63AF015767F0BC059D24D3E019880A95DEA9\
- E72BD462302806CF9BFB1C9A3E3BAC4D612889ACF4839AC0FE7F60625FA33DABA6F0FCD6EBF88401\
- 712EF3DA505092CBB5ACCDC510258F3003868DC15C0E5374B01E6BF555972E3F99C789F1E14B171C\
- E508D895CDD71AB6FD8D9F61962A3E1D89E0E748E3C5505AF21E0DF6D95FEA86E87D5DED7D00A669\
- FC8CAB472A93F993BBB21636AEDE56F747E11FCF69F96D4C87732C5BE3780E01C772F3BD0938DD5A\
- 440BDCC846808395728AF10C95C6F8E6714DDAFA19B2318201CF308201CB02010130543040310B30\
- 09060355040613025553311B3019060355040A131253716C5175616E74756D4C6561702E636F6D31\
- 1430120603550403130B53514C434C52204365727402109BCC3B23A3549F9645D0A425322CF7FD30\
- 0906052B0E03021A0500A0523010060A2B06010401823702010C31023000301906092A864886F70D\
- 010903310C060A2B060104018237020104302306092A864886F70D0109043116041470E1D5141ADB\
- 71E29F00A5D80E2A58B2BCBA01D4300D06092A864886F70D010101050004820100AF02DE1136A6CE\
- 693A4C46F9DBB494FD7FE687F0C014A75B5A8DEB0D6B7A0CB967C42A09B743E0124891B3598FADAB\
- A6DF6812378F15A0B9C7B8AB076A90D320BAFC220F5438C4204E2A5A770DDD93AB2E4AD324198659\
- 9C991196FBC115ACFBB5B492B21F2FB6DCB89D4B61E2E19C716693C6A2F9DE12572E259CBFD48238\
- 003FF893D95D3EC5C025CD9323147A0D4BEAB0F2C430C9F1C0B035FA983FF62E7F840723B9B7DABC\
- D580FC3347C1173DFDF56A94EC5498FFB11D0F6816A3E0432E986327CC6A2CC9858CDD79C39E6C8F\
- 929CCD8DE79B7C0C6EC77556E7EFAF79E2A2B79CE11AE5F4A9EC459E1C290E7935CAB66AD1B957FE\
- 8D4829365E24549A9F00000000000000
- WITH PERMISSION_SET = SAFE;
- END;
- IF (OBJECT_ID(N'dbo.String_PadLeft') IS NULL)
- BEGIN
- PRINT N'Creating [dbo].[String_PadLeft]...';
- EXEC(N'
- CREATE FUNCTION [dbo].[String_PadLeft]
- (
- @InputString NVARCHAR(4000),
- @PadChar NVARCHAR(1),
- @PadAmount INT
- )
- RETURNS NVARCHAR(4000)
- WITH RETURNS NULL ON NULL INPUT
- AS EXTERNAL NAME [SQL2017_ClrStrictSecurity2].[UserDefinedFunctions].[String_PadLeft];
- ');
- END;
- GO
- PRINT 'Running three tests...';
- SELECT dbo.String_PadLeft(N'3456', N'~', 7); -- ~~~3456
- SELECT dbo.String_PadLeft(N'34567', N'+', 3); -- 34567
- SELECT dbo.String_PadLeft(NULL, N'f', 5); -- NULL
- PRINT 'Removing UNSAFE ASSEMBLY permission...';
- EXEC (N'
- USE [master];
- REVOKE UNSAFE ASSEMBLY FROM [SQL2017-ClrStrictSecurity2-Login];
- ');
- PRINT 'Re-running first test (it should error in SQL Server 2017)...';
- SELECT dbo.String_PadLeft(N'3456', N'~', 7); -- ~~~3456
- /* RETURNS:
- ~~~3456
- 34567
- NULL
- */
- GO
- SELECT ASSEMBLYPROPERTY(N'sql2017_clrstrictsecurity2', 'CLRName') AS [CLRName];
- -- sql2017_clrstrictsecurity2, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil
Add Comment
Please, Sign In to add comment