To naprawdę jest połączenie wielu pytań.
pytania 1 i 2
- Utwórz nową bazę danych zachowując strukturę starej bazy danych
- Ustaw nazwę nowej bazy danych
Najprostszym zapasowej komenda byłaby:
BACKUP DATABASE dbname TO DISK = 'C:\some folder\dbname.bak' WITH INIT;
-- or WITH INIT, COMPRESSION if you are on Enterprise or Developer
Teraz, aby przywrócić to jako inną bazę danych, musisz znać nazwy plików, ponieważ spróbuje umieścić te same pliki w tym samym miejscu.Więc jeśli uruchomić następujące:
EXEC dbname.dbo.sp_helpfile;
Powinieneś zobaczyć wyjście zawierający nazwy i ścieżki danych i plików dziennika. Kiedy tworzymy przywrócić, trzeba z nich korzystać, ale zastąpić ścieżki z nazwą nowej bazy danych, np:
RESTORE DATABASE newname FROM DISK = 'C:\some folder\dbname.bak'
WITH MOVE 'dbname' TO 'C:\path_from_sp_helpfile_output\newname_data.mdf',
MOVE 'dbname_log' TO 'C:\path_from_sp_helpfile_output\newname_log.ldf';
Będziesz musiał zastąpić dbname
i newname
rzeczywistą nazw baz danych, a także C:\some folder
i C:\path_from_sp_helpfile_output\
z rzeczywistymi ścieżkami. Nie mogę uzyskać dokładniejszej odpowiedzi, chyba że wiem, co to jest.
Oto pełna repro:
CREATE DATABASE [DB-A];
GO
EXEC [DB-A].dbo.sp_helpfile;
wyniki cząstkowe:
name fileid filename
-------- ------ ---------------------------------
DB-A 1 C:\Program Files\...\DB-A.mdf
DB-A_log 2 C:\Program Files\...\DB-A_log.ldf
Teraz uruchomić kopię zapasową:
BACKUP DATABASE [DB-A] TO DISK = 'C:\dev\DB-A.bak' WITH INIT;
Oczywiście jeśli cel klon (w tym przypadku DB-B
) ady istnieje, będziemy chcieli, aby go nie upuścić:
USE [master];
GO
IF DB_ID('DB-B') IS NOT NULL
BEGIN
ALTER DATABASE [DB-B] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [DB-B];
END
GO
Teraz to będzie działać z powodzeniem przywrócić, co daje kopię DB-A przemianowany jako DB-B:
RESTORE DATABASE [DB-B] FROM DISK = 'C:\dev\DB-A.bak'
WITH MOVE 'DB-A' TO 'C:\Program Files\...\DB-B.mdf',
MOVE 'DB-A_log' TO 'C:\Program Files\...\DB-B_log.ldf';
PYTANIA 3 i 4
- zmienić wszystkie typy danych varchar i char do nvarchar i nchar
- zmienić wszystkie typy danych tekstowych do nvarchar (max)
Refaktoryzacja jest głównym ból, zwłaszcza jeśli niektóre z tych kolumn udziału w ograniczeniach. W ten sposób możesz zbudować bardzo prosty skrypt, ale będziesz potrzebować czegoś znacznie więcej siły przemysłowej, aby poradzić sobie ze wszystkimi tymi zmiennymi. Zakłada to, że wszystkie kolumny są zerowe i nie uczestniczą w ograniczeniach.
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += '
ALTER TABLE ' +
QUOTENAME(OBJECT_SCHEMA_NAME(c.[object_id]))
+ '.' + QUOTENAME(OBJECT_NAME(c.[object_id]))
+ ' ALTER COLUMN ' + QUOTENAME(c.name) + ' '
+ CASE t.name WHEN N'text'
THEN N'nvarchar(max)'
ELSE N'n' + t.name + '(' + RTRIM(c.max_length) + ')'
END + ';'
FROM sys.columns AS c
INNER JOIN sys.types AS t
ON c.user_type_id = t.user_type_id
WHERE c.system_type_id IN (35, 167, 175)
AND OBJECTPROPERTY(c.[object_id], 'IsMsShipped') = 0;
PRINT @sql;
-- EXEC sp_executesql @sql;
Można użyć wydruków do sprawdzenia pierwszego 8K skryptu, a kiedy myślisz, że wygląda dobrze, odkomentuj EXEC
.
Po zakończeniu konfiguracji należy przebudować wszystkie indeksy.
Powiedział, skryptów bazy danych jak sugeruje Tony (lub za pomocą narzędzia jak Red Gate's SQL Compare - lub one of its many alternatives - przeciwko pustej bazy danych) prawdopodobnie będzie znacznie łatwiejsze, szczególnie gdy niektóre z tych kolumn udziału w ograniczeniach - które mogą wymagać zostać usunięte i ponownie utworzone w celu zmiany typów.
pytania 5 i 6
- Jak mogę uaktualnić bazy danych serwera SQL SQL Server 2012
- Czy istnieją jakieś prace przygotowawcze muszę przeprowadzić na bazie danych w celu zapewnienia Mogę z łatwością go uaktualnić?
Nie można zaktualizować pojedynczej bazy danych w 2008 roku. Aktualizujesz się na miejscu lub konfigurujesz nową instancję (tak jak opisał Tony), a następnie przeprowadzasz migrację bazy danych (najlepiej przy użyciu funkcji tworzenia kopii zapasowych/przywracania - wiele osób powie Ci, aby odłączyć/dołączyć, ale jest to o wiele mniej bezpieczne). Prace przygotowawcze należy obejmują:
i po aktualizacji zechcesz:
- ustaw poziom zgodności na 110
- zaktualizuj wszystkie statystyki
Jednym słowem, beautimus! Dzięki. – MikeMalter
wow ... heck odpowiedzi !!! – SFun28