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