W MS SQL Server od wersji 2000 zostały wprowadzone modele odtwarzania, które pomagają w planowaniu kopii bezpieczeństwa.

Dostępne są trzy modele odtwarzania:

• Pełny (Full recovery)
• Rejestracja masowa (Bulk-logged recovery)
• Prosty (Simple recovery)

Komenda DATABASEPROPERTYEX zwraca  model odtwarzania dla podanej bazy:

Select DATABASEPROPERTYEX ('nazwa_bazy_danych', 'recovery')

W odpowiedzi system zwróci jedną nazwę z trzech modeli:

  • FULL,
  • BULK_LOGGED,
  • SIMPLE.

Poniżej przedstawiam skrypt wyświetlający modele dla wszystkich baz danych umieszczonych na serwerze.

Testowany skrypt był na wersjach SQL Server: 2000, 2005 i 2008. Na 2008 R2 nie testowałem.

------------------------------------------------------
-- Script     : Recorvery_model.sql
-- Author     : Dariusz Brejnak aka `DBSoft (c) 2010
-- Created    : 2010-08-27
-- SQL Version: 2000, 2005, 2008
-----------------------------------------------------
USE master
GO

DECLARE @DBName varchar(255)

DECLARE DB_Cursor CURSOR FOR
SELECT
DATABASE_NAME   = db_name(s.dbid)
FROM
[master].[dbo].[sysdatabases] s
GROUP BY s.dbid
ORDER BY DATABASE_NAME

CREATE TABLE #tmp
([Database] varchar(50) null,
[Recorvery_model] varchar(20) null
)

OPEN DB_Cursor
FETCH NEXT FROM DB_Cursor INTO @DBName

WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #tmp
SELECT @DBName,
cast(DATABASEPROPERTYEX(@DBName,'recovery') as VARCHAR(20))

FETCH NEXT FROM DB_Cursor INTO @DBName
END
CLOSE DB_Cursor
DEALLOCATE DB_Cursor

SELECT [Database],[Recorvery_model] FROM #tmp
ORDER BY 1
DROP TABLE #tmp

.

.

.


Dariusz Brejnak

Od prawie trzydziestu lat jest pasjonatem informatyki, a zwłaszcza dziedzin dotyczących baz danych, hurtowni danych oraz ogólnie rozumianej tematyki BI. Jego druga pasja to fotografia http://dariuszbrejnak.pl

3 komentarze

alekpo · 5 września 2010 o 23:23

Przyda się na pewno.

Można to zapisać tak:

SELECT db_name(s.dbid),
cast(DATABASEPROPERTYEX(db_name(s.dbid),’recovery’) as VARCHAR(20))
FROM
[master].[dbo].[sysdatabases] s

roku · 11 września 2010 o 12:57

kto potrafi jeszcze prosciej 😉

Select name,recovery_model_desc from sys.databases

Dariusz Brejnak · 11 września 2010 o 13:20

Select * from sys.databases,

ale to czysta głupota bo tak się nie powinno pisać.

A dlatego taki długi kod, ponieważ był to fragment służący do generowania skryptu.

Możliwość komentowania została wyłączona.