INF: Przenoszenie baz danych programu SQL Server do nowej lokalizacji za pomocą odłączania/dołączania

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 224071 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Ten artykuł został opublikowany wcześniej pod numerem PL224071
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule opisano sposób zmiany lokalizacji plików danych i plików dziennika dla dowolnej bazy danych programów SQL Server 2005, SQL Server 2000 lub SQL Server 7.0.

Aby uzyskać więcej informacji dotyczących sposobu przenoszenia systemowych baz danych w programie SQL Server 2005, zobacz temat „Moving System Databases” (Przenoszenie systemowych baz danych) w dokumentacji SQL Server Books Online. Aby wyświetlić ten temat, odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms345408.aspx

Więcej informacji

Kroki, które należy wykonać w celu zmiany lokalizacji niektórych systemowych baz danych w programie SQL Server, różnią się od kroków związanych ze zmianą lokalizacji baz danych użytkowników. Te specjalne przypadki opisano oddzielnie.

Uwaga: Systemowe bazy danych programu SQL Server 7.0 nie są zgodne z programem SQL Server 2000. Nie wolno dołączać baz danych master, model lub msdb albo dystrybucyjnych baz danych do programu SQL Server 2000. Jeżeli używany jest program SQL Server 2005, można dołączać do wystąpienia tylko bazy danych programu SQL Server 2005. We wszystkich przykładach zamieszczonych w tym artykule założono, że program SQL Server jest zainstalowany w folderze D:\Mssql7. Ponadto w tych przykładach założono, że wszystkie pliki danych i pliki dziennika znajdują się w domyślnym folderze D:\Mssql7\Data. W tych przykładach pliki danych i pliki dziennika dla wszystkich baz danych są przenoszone do folderu E:\Sqldata.

Wymagania wstępne

  • Należy wykonać kopię zapasową wszystkich baz danych, zwłaszcza bazy danych master, z ich bieżących lokalizacji.
  • Trzeba mieć uprawnienia administratora systemu (sa).
  • Muszą być znane nazwy i bieżące lokalizacje wszystkich plików danych i plików dziennika dla bazy danych.

    Uwaga: Nazwy i bieżące lokalizacje wszystkich plików używanych przez bazę danych można ustalić przy użyciu procedury przechowywanej sp_helpfile:
    use <database_name>
    go
    sp_helpfile
    go
  • Trzeba mieć wyłączny dostęp do przenoszonej bazy danych. Jeżeli występują problemy podczas tego procesu i nie można uzyskać dostępu do przenoszonej bazy danych lub nie można uruchomić programu SQL Server, należy zbadać dziennik błędów programu SQL Server i skorzystać z dokumentacji SQL Server Books Online, aby uzyskać więcej informacji dotyczących występujących błędów.

Przenoszenie baz danych użytkowników

W następującym przykładzie przenoszona jest baza danych o nazwie mydb. Ta baza danych zawiera jeden plik danych (Mydb.mdf) i jeden plik dziennika (Mydblog.ldf). Jeżeli przenoszona baza danych używa również innych plików danych lub plików dziennika, należy określić te pliki w formie listy rozdzielanej przecinkami w procedurze przechowywanej sp_attach_db. Procedura sp_detach_db nie ulega zmianie niezależnie od liczby plików uwzględnionych w bazie danych, ponieważ procedura sp_detach_db nie wyświetla listy plików.
  1. Odłącz bazę danych w następujący sposób:
    use master
       go
       sp_detach_db 'mydb'
       go
  2. Następnie skopiuj pliki danych i pliki dziennika z bieżącej lokalizacji (D:\Mssql7\Data) do nowej lokalizacji (E:\Sqldata).
  3. Dołącz ponownie bazę danych. Wskaż pliki w nowej lokalizacji w następujący sposób:
    use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    Zweryfikuj zmianę lokalizacji plików przy użyciu procedury przechowywanej sp_helpfile:
    use mydb
       go
       sp_helpfile
       go
    Wartości w kolumnie filename powinny odzwierciedlać nowe lokalizacje.
Uwaga: W artykule 922804 z bazy wiedzy Microsoft Knowledge Base opisano problem związany z bazami danych programu SQL Server 2005 w magazynie dołączonym do sieci. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
922804 POPRAWKA: Po odłączeniu bazy danych programu Microsoft FIX Server SQL znajdującej się w magazynie podłączonym do sieci nie można ponownie podłączyć bazy danych programu SQL Server
Należy rozważyć ten problem. Należy również rozważyć uprawnienia stosowane w odniesieniu do bazy danych wówczas, gdy jest odłączana w programie SQL Server 2005. Aby uzyskać więcej informacji, zobacz sekcję „Detaching and Attaching a Database” (Odłączanie i dołączanie bazy danych) tematu „Securing Data and Log Files” (Zabezpieczanie danych i plików dziennika) w dokumentacji SQL Server Books Online. Aby wyświetlić ten temat, odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms189128.aspx

Przenoszenie przykładowych baz danych

Aby przenieść przykładowe bazy danych pubs i Northwind w programach SQL Server 2000 lub SQL Server 7.0 albo przenieść przykładowe bazy danych AdventureWorks i AdventureWorksDW w programie SQL Server 2005, należy wykonać taką samą procedurę, jak w przypadku przenoszenia baz danych użytkowników.

Przenoszenie bazy danych model

Program SQL Server 7.0

  1. Upewnij się, że program SQL Server Agent nie jest uruchomiony.
  2. Wykonaj taką samą procedurę, jak w przypadku przenoszenia baz danych użytkowników.

Programy SQL Server 2005 i SQL Server 2000

W programach SQL Server 2005 i SQL Server 2000 nie można odłączać systemowych baz danych przy użyciu procedury przechowywanej sp_detach_db. Podczas próby wykonania instrukcji sp_detach_db 'model' wyświetlany jest następujący komunikat o błędzie:
Server: Msg 7940, Level 16, State 1, Line 1
System databases master, model, msdb, and tempdb cannot be detached. (Serwer: Komunikat 7940, poziom 16, stan 1. Nie można odłączyć systemowych baz danych master, model, msdb i tempdb.)
Aby przenieść bazę danych model, należy uruchomić program SQL Server z opcją -c, opcją -m i flagą śledzenia 3608. Flaga śledzenia 3608 uniemożliwia odzyskanie dowolnej bazy danych przez program SQL Server z wyjątkiem bazy danych master.

Uwaga: Po wykonaniu tej czynności nie można uzyskać dostępu do żadnych baz danych użytkowników. Podczas korzystania z tej flagi śledzenia nie wolno wykonywać żadnych operacji z wyjątkiem następujących kroków: Aby dodać flagę śledzenia 3608 jako parametr uruchamiania programu SQL Server, wykonaj następujące kroki:
  1. W programie SQL Server Enterprise Manager kliknij prawym przyciskiem myszy nazwę serwera, a następnie kliknij polecenie Properties (Właściwości).
  2. Na karcie General (Ogólne) kliknij przycisk Startup Parameters (Parametry uruchamiania).
  3. Dodaj następujący nowy parametr:
    -c -m -T3608
Jeżeli korzystasz z programu SQL Server 2005, możesz użyć programu SQL Server Configuration Manager do zmiany parametrów uruchamiania usługi SQL Server. Aby uzyskać więcej informacji dotyczących sposobu zmiany parametrów uruchamiania, odwiedź następującą witrynę firmy Microsoft Developer Network (MSDN) w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms190737.aspx
Po dodaniu opcji -c, opcji -m i flagi śledzenia 3608 wykonaj następujące kroki:
  1. Zatrzymaj, a następnie ponownie uruchom program SQL Server.
  2. Odłącz bazę danych model przy użyciu następujących poleceń:
    use master
       go
       sp_detach_db 'model'
       go
  3. Przenieś pliki Model.mdf i Modellog.ldf z folderu D:\Mssql7\Data do folderu E:\Sqldata.
  4. Ponownie dołącz bazę danych model przy użyciu następujących poleceń:
    use master
       go
       sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf'
       go
  5. Usuń parametr -c -m -T3608 z pola parametrów uruchamiania w programie SQL Server Enterprise Manager lub SQL Server Configuration Manager.
  6. Zatrzymaj, a następnie ponownie uruchom program SQL Server. Można zweryfikować zmianę lokalizacji plików przy użyciu procedury przechowywanej sp_helpfile. Na przykład użyj następującego polecenia:
    use model
       go
       sp_helpfile
       go

Przenoszenie bazy danych MSDB

Program SQL Server 7.0

Uwaga: Jeżeli ta procedura jest używana podczas przenoszenia baz danych msdb i model, należy najpierw ponownie dołączyć bazę danych model, a następnie ponownie dołączyć bazę danych msdb. Wykonaj następujące kroki:
  1. Upewnij się, że program SQL Server Agent nie jest uruchomiony.
  2. Wykonaj taką samą procedurę, jak w przypadku przenoszenia baz danych użytkowników.
Uwaga: Jeżeli uruchomiony jest program SQL Server Agent, procedura przechowywana sp_detach_db nie zostanie wykonana pomyślnie i zostanie wyświetlony następujący komunikat:
Server: Msg 3702, Level 16, State 1, Line 0
Cannot drop the database 'msdb' because it is currently in use.
DBCC execution completed. If DBCC printed error messages, contact your system administrator. (Serwer: Komunikat 3702, poziom 16, stan 1. Wiersz 0. Nie można odrzucić bazy danych „msdb” , ponieważ nie jest teraz używana. Zakończono wykonywanie DBCC. W przypadku komunikatów o błędach DBCC skontaktuj się z administratorem systemu.)

Programy SQL Server 2005 i SQL Server 2000

Aby przenieść bazę danych MSDB, należy uruchomić program SQL Server z opcją -c, opcją -m i flagą śledzenia 3608. Flaga śledzenia 3608 uniemożliwia odzyskanie dowolnej bazy danych przez program SQL Server z wyjątkiem bazy danych master. Aby dodać opcję -c, opcję -m i flagę śledzenia 3608, wykonaj kroki opisane w sekcji „Przenoszenie bazy danych model” . Po dodaniu opcji -c, opcji -m i flagi śledzenia 3608 wykonaj następujące kroki:
  1. Zatrzymaj, a następnie ponownie uruchom program SQL Server.
  2. Upewnij się, że usługa SQL Server Agent nie jest uruchomiona.
  3. Odłącz bazę danych msdb w następujący sposób:
    use master
    go
    sp_detach_db 'msdb'
    go
  4. Przenieś pliki Msdbdata.mdf i Msdblog.ldf z bieżącej lokalizacji (D:\Mssql8\Data) do nowej lokalizacji (E:\Mssql8\Data).
  5. Usuń parametr -c -m -T3608 z pola parametrów uruchamiania w programie Enterprise Manager.
  6. Zatrzymaj, a następnie ponownie uruchom program SQL Server.

    Uwaga: Podczas próby ponownego dołączenia bazy danych msdb przez uruchomienie programu SQL Server z opcją -c, opcją -m i flagą śledzenia 3608 może zostać wyświetlony następujący komunikat o błędzie:
    Server: Msg 615, Level 21, State 1, Line 1
    Could not find database table ID 3, name 'model'. (Serwer: Komunikat 615, poziom 21, stan 1, wiersz 1. Nie można odnaleźć tabeli o identyfikatorze 3 w bazie danych o nazwie „model” .)
  7. Ponownie dołącz bazę danych msdb w następujący sposób:
    use master
    go 
    sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' 
    go
Uwaga: Jeżeli ta procedura jest używana równocześnie z przeniesieniem bazy danych model, podejmowana jest próba odłączenia bazy danych msdb podczas odłączania bazy danych model. W takim wypadku należy najpierw ponownie dołączyć bazę danych model, a następnie ponownie dołączyć bazę danych msdb. Ponowne podłączenie bazy danych msdb w pierwszej kolejności powoduje wyświetlenie następującego komunikatu o błędzie podczas próby ponownego dołączenia bazy danych model:
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded. (Serwer: Komunikat 0, poziom 11, stan 0, wiersz 0. Wystąpił poważny błąd związany z bieżącym poleceniem. Ewentualne wyniki powinny być odrzucone.)
W takim wypadku należy odłączyć bazę danych msdb, ponownie dołączyć bazę danych model, a następnie ponownie dołączyć bazę danych msdb.

Po przeniesieniu bazy danych msdb może zostać wyświetlony następujący komunikat o błędzie:
Error 229: EXECUTE permission denied on object 'NazwaObiektu', database 'master', owner 'dbo'. (Błąd 229: Odmowa uprawnienia WYKONYWANIE w odniesieniu do obiektu NazwaObiektu, baza danych „master” , właściciel „dbo” .)
Ten problem występuje, ponieważ łańcuch własności został przerwany. Właściciel bazy danych msdb różni się od właściciela bazy danych master. W takim wypadku własność bazy danych msdb została zmieniona. W celu obejścia tego problemu należy wykonać następujące instrukcje Transact-SQL. W tym celu można użyć narzędzia wiersza polecenia Osql.exe (programy SQL Server 7.0 i SQL Server 2000) lub narzędzia wiersza polecenia Sqlcmd.exe (program SQL Server 2005):
USE MSDB 
Go 
EXEC sp_changedbowner 'sa' 
Go
Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
272424 Sprawdzanie łańcucha własności obiektów w różnych bazach danych jest zależne od identyfikatora logowania mapowanego na właścicieli obiektów

Przenoszenie bazy danych master

  1. Należy zmienić ścieżkę dla plików danych i plików dziennika bazy danych master w programie SQL Server Enterprise Manager.

    Uwaga: W tym miejscu można również zmienić lokalizację dziennika błędów.
  2. Kliknij prawym przyciskiem myszy w programie SQL Server Enterprise Manager, a następnie kliknij polecenie Properties (Właściwości).
  3. Kliknij przycisk Startup Parameters (Parametry uruchamiania), aby wyświetlić następujące wpisy:
    -dD:\MSSQL7\data\master.mdf
       -eD:\MSSQL7\log\ErrorLog
       -lD:\MSSQL7\data\mastlog.ldf
    -d jest w pełni kwalifikowaną ścieżką dla pliku danych bazy master.

    -e jest w pełni kwalifikowaną ścieżką dla pliku dziennika błędów.

    -l jest w pełni kwalifikowaną ścieżką dla pliku dziennika bazy danych master.
  4. Zmień wartości w następujący sposób:
    1. Usuń bieżące wpisy dla plików Master.mdf i Mastlog.ldf.
    2. Dodaj nowe wpisy określające nową lokalizację:
      -dE:\SQLDATA\master.mdf
            -lE:\SQLDATA\mastlog.ldf
  5. Zatrzymaj program SQL Server.
  6. Skopiuj pliki Master.mdf i Mastlog.ldf do nowej lokalizacji (E:\Sqldata).
  7. Ponownie uruchom program SQL Server.
Uwaga: Jeżeli korzystasz z programu SQL Server 2005, możesz użyć programu SQL Server Configuration Manager do zmiany ścieżki plików danych i plików dziennika bazy danych master.

Przenoszenie bazy danych tempdb

Można przenieść pliki bazy danych tempdb przy użyciu instrukcji ALTER DATABASE.
  1. Ustal logiczne nazwy plików dla bazy danych tempdb przy użyciu procedury sp_helpfile w następujący sposób:
    use tempdb
    go
    sp_helpfile
    go
    Nazwa logiczna dla każdego pliku jest uwzględniona w kolumnie name. W tym przykładzie wykorzystano domyślne nazwy plików baz danych tempdev i templog.
  2. Użyj instrukcji ALTER DATABASE, określając logiczną nazwę pliku w następujący sposób:
    use master
    go
    Alter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')
    go
    Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
    go
    Powinny zostać wyświetlone następujące komunikaty potwierdzające zmianę:
    Komunikat 1
    File 'tempdev' modified in sysaltfiles. (Plik „tempdev” zmodyfikowany w plikach sysaltfiles.) Delete old file after restarting SQL Server. (Usuń stary plik po ponownym uruchomieniu programu SQL Server.)
    Komunikat 2
    File 'templog' modified in sysaltfiles. (Plik „templog” zmodyfikowany w plikach sysaltfiles.) Delete old file after restarting SQL Server. (Usuń stary plik po ponownym uruchomieniu programu SQL Server.)
  3. Użycie procedury sp_helpfile w bazie danych tempdb nie powoduje potwierdzenia tych zmian do chwili, kiedy program SQL Server zostanie ponownie uruchomiony.
  4. Zatrzymaj, a następnie ponownie uruchom program SQL Server.

Przenoszenie baz danych master i Resource

Aby uzyskać więcej informacji dotyczących przenoszenia baz danych master i Resource, odwiedź następującą witrynę usługi MSDN (Microsoft Developer Network) w sieci Web:
http://msdn2.microsoft.com/en-us/library/ms345408.aspx

Materiały referencyjne

Aby uzyskać więcej informacji, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
912397 Nie można uruchomić usługi SQL Server po zmianie parametru uruchamiania dla klastrowanego wystąpienia programu SQL Server 2000 lub SQL Server 2005 na nieprawidłową wartość
274188 Temat „Troubleshooting orphaned users” w dokumentacji Books Online jest niekompletny
246133 Jak transferować identyfikatory logowania i hasła pomiędzy wystąpieniami programu SQL Server
168001 Identyfikatory logowania i uprawnienia użytkowników dotyczące bazy danych mogą być niepoprawne po przywróceniu bazy danych

Aby uzyskać więcej informacji, skorzystaj z następujących publikacji:
Microsoft Corporation
Microsoft SQL Server 7.0 System Administration Training Kit (Zestaw do szkolenia w zakresie administracji systemu SQL Server 7.0)
Microsoft Press, 2001
Microsoft Corporation
MCSE Training Kit: Microsoft SQL Server 2000 System Administration (Administracja systemu SQL Server 2000)
Microsoft Press, 2001
Microsoft Corporation
Microsoft SQL Server 2000 Resource Kit (Zestaw zasobów programu SQL Server 2000)
Microsoft Press, 2001

Właściwości

Numer ID artykułu: 224071 - Ostatnia weryfikacja: 18 maja 2011 - Weryfikacja: 16.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Słowa kluczowe: 
kbsqlmanagementtools kbinfo KB224071

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com