TABLE OF CONTENTS
Çevrimdışı Removing Databases ve Orphaned Datafile’ları SQL Server’ınızdan Kaldırma
Orphaned Datafile Nedir? Orphaned database file’ları , herhangi bir ekli veritabanıyla (canlı veritabanı) ilişkili olmayan dosyalardır. Bazen bir SQL Server örneğinden bir veritabanını bıraktığınızda, temel alınan dosyalar kaldırılmaz. Çok sayıda geliştirme ve test ortamı yönetiyorsanız, bu kesinlikle gerçekleşebilir. Genellikle, bir veritabanını çevrimdışı duruma getirdiğinizde ve kaldırmadan önce tekrar çevrimiçi duruma getirmeyi unuttuğunuzda.Neden onları önemsemelisiniz?
Çevrimdışı veritabanları ve artık dosyalar, SQL Server depolama alanınızda gereksiz alan kullanıyor olabilir.Onları nasıl kontrol edebiliriz?
Çevrimdışı veritabanları
Kurulumunuzdaki tüm çevrimdışı veritabanlarını listelemek için aşağıdaki betiği çalıştırın.SELECT ‘DB_NAME’ = db.name, ‘FILE_NAME’ = mf.name, ‘FILE_TYPE’ = mf.type_desc, ‘FILE_PATH’ = mf.physical_name FROM sys.databases db INNER JOIN sys.master_files mf ON db.database_id = mf.database_id WHERE db.state = 6
Orphaned database file’ları
Aşağıdaki betiği çalıştırabilir ve artık veritabanını bir örnekten bulabilirsiniz.DECLARE @DefaultDataPath VARCHAR(512), @DefaultLogPath VARCHAR(512); SET @DefaultDataPath = CAST(SERVERPROPERTY(‘InstanceDefaultDataPath’) AS VARCHAR(512)); SET @DefaultLogPath = CAST(SERVERPROPERTY(‘InstanceDefaultLogPath’) AS VARCHAR(512)); IF OBJECT_ID(‘tempdb..#OrphanedDataFiles’) IS NOT NULL DROP TABLE #OrphanedDataFiles; CREATE TABLE #OrphanedDataFiles ( Id INT IDENTITY(1,1), [FileName] NVARCHAR(512), Depth smallint, FileFlag bit, Directory VARCHAR(512) NULL, FullFilePath VARCHAR(512) NULL); INSERT INTO #OrphanedDataFiles ([FileName], Depth, FileFlag) EXEC MASTER..xp_dirtree @DefaultDataPath, 1, 1; UPDATE #OrphanedDataFiles SET Directory = @DefaultDataPath, FullFilePath = @DefaultDataPath + [FileName] WHERE Directory IS NULL; INSERT INTO #OrphanedDataFiles ([FileName], Depth, FileFlag) EXEC MASTER..xp_dirtree @DefaultLogPath, 1, 1; UPDATE #OrphanedDataFiles SET Directory = @DefaultLogPath, FullFilePath = @DefaultLogPath + [FileName] WHERE Directory IS NULL; SELECT f.[FileName], f.Directory, f.FullFilePath FROM #OrphanedDataFiles f LEFT JOIN sys.master_files mf ON f.FullFilePath = REPLACE(mf.physical_name,’\\’, ‘\’) WHERE mf.physical_name IS NULL AND f.FileFlag = 1 ORDER BY f.[FileName], f.Directory DROP TABLE #OrphanedDataFiles;Ayrıca, bunu dba araçlarını (PowerShell) kullanarak da yapabilirsiniz. Nasıl düzeltiliriz? Hâlâ çevrimdışı olduklarından, muhtemelen gerekli değillerdir.
- Dosyaları kaldırmayı düşünün.
- Bir potansiyel varsa, onlardan bir şeye ihtiyacınız olabilir, önce yedekleyin.
Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!
İletişime geçerek hemen destek alabilirsiniz.
İletişim