Luc

Csőhalmadár!

MS-SQL össze tábla törlése

Az aktuális adatbázishoz tartozó összes tábla törlése: EXEC sp_MSforeachtable @command1 = "DROP TABLE ?" A system táblákat nem bántja. Ha van reláció a táblák között, akkor esetleg többször is le kell futtatnunk.

MS-SQLelsődleges kulcs újrakezdése, RESEED

Egy tábla kövekező kiosztandó azonosítójának megváltoztatása:

DBCC CHECKIDENT (táblaneve, reseed, 42)

Ezzel az épp aktuálisan kiosztott azonosítót változtatjuk meg, így ha 1-ről szeretnénk újrakezdeni az azonosítók kiosztását, akkor a harmadik paraméter 0 legyen.

Forrás: http://blog.sqlauthority.com/2007/03/15/sql-server-dbcc-reseed-table-identity-value-reset-table-identity/

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 :)