Luc

Csőhalmadár!

FileSystemWatch​­er alkönyvtár figyelése

Mi a különbség a két kódrészlet között?
            importWatcher.IncludeSubdirectories = true;
            importWatcher.Path = ConfigurationManager.AppSettings["ImportFolder"];
            importWatcher.Path = ConfigurationManager.AppSettings["ImportFolder"];
            importWatcher.IncludeSubdirectories = true;
Az, hogy az első leginkább csúnya szavakat generál. Addig ne nagyon próbálkozzunk alkönyvtárfigyelést beállítani, amíg nincs beállítva maga az útvonal, amit figyeltetni szeretnénk.

T-SQL és a reguláris kifejezések

T-SQL-ben is használhatjuk a reguláris kifejezéseket, csak némi hegesztést igényel a dolog.
 Hozzunk létre egy Class Library-t, valami ilyesmi tartalommal:
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;

namespace LunirSqlExtensions
{
    
    public class SqlRegex
    {
        [SqlFunction(IsDeterministic=true, IsPrecise=true)]
        public static bool IsMatch(string inputfield, string pattern)
        {
            return Regex.IsMatch(inputfield, pattern);
        }
    }
}
Fontos, hogy 3.5 framework-re buildeljünk, különben az SQL szerver beszól, legalább is a 2008 R2. Ebből lesz egy DLL, amit használni tudunk SQL-ből, némi előkészítés után:
sp_configure 'clr enabled', 1
go
reconfigure
go
create ASSEMBLY LunirSqlExtensions from 'x:\SqlExt\LunirSqlExtensions.dll' with PERMISSION_SET = SAFE
go
create function [dbo].[LunirRegexIsMatch] (@inputfield [nvarchar](MAX), @pattern [nvarchar](255)) RETURNS [BIT] with execute as caller AS EXTERNAL NAME LunirSqlExtensions.[LunirSqlExtensions.SqlRegex].[IsMatch]
go
Ez pedig a használata:
select dbo.LunirRegexIsMatch('a','a')
Tudom, hogy nem a legvilágrengetőbb az 'a' stringen alkalmazni az 'a' reguláris kifejezést, de példának megfelel :)