Automatyzuję ostatnio pewną bazę danych, która wymaga co jakiś czas zmiany schematu partycjonowania, funkcji partycjonującej oraz oczywiście dokładania nowych filegroup i plików.
W trakcie tej automatyzacji powstało kilka fajnych procedur i funkcji, dzisiaj zaprezentuję jedną z nich – funkcja ta ma na celu zwrócenie katalogu, w którym znajduje się domyślny filegroup (PRIMARY).
CREATE FUNCTION [dbo].[udf_GetPrimaryFilegroupDir]() RETURNS nvarchar(500) AS BEGIN DECLARE @path nvarchar(500) SELECT @path = physical_name FROM sys.database_files a INNER JOIN sys.filegroups b ON a.data_space_id = b.data_space_id WHERE filegroup_guid IS NULL SET @path = REVERSE(@path) SET @path = SUBSTRING(@path, CHARINDEX('\', @path, 0), 500) SET @path = REVERSE(@path) RETURN @path END
Nie do końca jestem zadowolony ze sposobu przerabiania ścieżki do pliku na ścieżkę do katalogu i chętnie przyjmę propozycje bardziej eleganckich rozwiązań :)
Dodaj komentarz