Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
In dit artikel wordt beschreven hoe u systeemdatabases verplaatst in SQL Server. Het verplaatsen van systeemdatabases kan handig zijn in de volgende situaties:
Herstel van mislukking. De database bevindt zich bijvoorbeeld in de verdachte modus of is afgesloten vanwege een hardwarefout.
Geplande verhuizing.
Verplaatsing voor gepland schijfonderhoud.
De volgende procedures zijn van toepassing op het verplaatsen van databasebestanden binnen hetzelfde exemplaar van SQL Server. Als u een database wilt verplaatsen naar een ander exemplaar van SQL Server of naar een andere server, gebruikt u de back-up- en herstelbewerking.
Voor de procedures in dit artikel is de logische naam van de databasebestanden vereist. Als u de naam wilt ophalen, voert u een query uit op de naamkolom in de sys.master_files catalogusweergave.
Important
Als u een systeemdatabase verplaatst en de master database later opnieuw opbouwt, moet u de systeemdatabase opnieuw verplaatsen omdat met de herbouwbewerking alle systeemdatabases worden geïnstalleerd op de standaardlocatie.
De systeemdatabases verplaatsen
Als u een systeemdatabasegegevens of logboekbestand wilt verplaatsen als onderdeel van een geplande herlocatie of gepland onderhoud, volgt u deze stappen. Dit omvat de model, msdben tempdb systeemdatabases.
Important
Deze procedure is van toepassing op alle systeemdatabases behalve de master en Resource databases. Zie verderop in dit artikel voor stappen om de master database te verplaatsen. De Resource database kan niet worden verplaatst.
Noteer de bestaande locatie van de databasebestanden die u wilt verplaatsen door de sys.master_files catalogusweergave te controleren.
Controleer of het serviceaccount voor de SQL Server Database Engine volledige machtigingen heeft voor de nieuwe locatie van de bestanden. Zie Windows-serviceaccounts en -machtigingen configurerenvoor meer informatie. Als het Database Engine serviceaccount de bestanden op de nieuwe locatie niet kan beheren, wordt het SQL Server exemplaar niet gestart.
Voer de volgende instructie uit om elk databasebestand te verplaatsen.
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name');Totdat de service opnieuw wordt opgestart, blijft de database de gegevens en logboekbestanden op de bestaande locatie gebruiken.
Stop het exemplaar van SQL Server om onderhoud uit te voeren. Zie SQL Server-services starten, stoppen, onderbreken, hervatten en opnieuw startenvoor meer informatie.
Kopieer het databasebestand of de bestanden naar de nieuwe locatie. Deze stap is niet nodig voor de
tempdbsysteemdatabase. Deze bestanden worden automatisch op de nieuwe locatie gemaakt.Start het exemplaar van SQL Server of de server opnieuw op. Zie SQL Server-services starten, stoppen, onderbreken, hervatten en opnieuw startenvoor meer informatie.
Controleer de bestandswijziging door de volgende query uit te voeren. De systeemdatabases moeten de nieuwe fysieke bestandslocaties rapporteren.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');Aangezien u in stap 5 de databasebestanden hebt gekopieerd in plaats van ze te verplaatsen, kunt u de ongebruikte databasebestanden veilig verwijderen van hun vorige locatie.
Opvolgen: Na het verplaatsen van de msdb systeemdatabase
Als de msdb database wordt verplaatst en Database Mail is geconfigureerd, voert u de volgende extra stappen uit.
Controleer of Service Broker is ingeschakeld voor de
msdbdatabase door de volgende query uit te voeren.SELECT is_broker_enabled FROM sys.databases WHERE name = N'msdb';Als De Service Broker niet is ingeschakeld, moet deze opnieuw worden ingeschakeld
msdbvoor Database Mail om te kunnen functioneren. Zie voor meer informatie ALTER DATABASE ... SET ENABLE_BROKER.ALTER DATABASE msdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;Controleer of de waarde
is_broker_enablednu 1 is.Controleer of Database Mail werkt door een testmail te verzenden.
Procedure voor herstel van fouten
Als een bestand moet worden verplaatst vanwege een hardwarefout, volgt u deze stappen om het bestand naar een nieuwe locatie te verplaatsen. Deze procedure is van toepassing op alle systeemdatabases behalve de master en Resource databases. In de volgende voorbeelden worden de Windows opdrachtregelprompt en sqlcmd Utility gebruikt.
Important
Als de database niet kan worden gestart, als deze zich in de verdachte modus of in een niet-herstelde status bevindt, kunnen alleen leden van de vaste rol sysadmin het bestand verplaatsen.
Controleer of het serviceaccount voor de SQL Server Database Engine volledige machtigingen heeft voor de nieuwe locatie van de bestanden. Zie Windows-serviceaccounts en -machtigingen configurerenvoor meer informatie. Als het Database Engine serviceaccount de bestanden op de nieuwe locatie niet kan beheren, wordt het SQL Server exemplaar niet gestart.
Stop het exemplaar van SQL Server als deze is gestart.
Start het exemplaar van SQL Server in
master-only herstelmodus door een van de volgende opdrachten in te voeren bij de opdrachtprompt. Als u opstartparameter 3608 gebruikt, voorkomt u dat SQL Server elke database automatisch start en herstelt, behalve demasterdatabase. Zie Opstartparameters en TF3608 voor meer informatie.De parameters die in deze opdrachten zijn opgegeven, zijn hoofdlettergevoelig. De opdrachten mislukken wanneer de parameters niet worden opgegeven zoals wordt weergegeven.
Voer voor het standaardexemplaren (MSSQLSERVER) de volgende opdracht uit:
NET START MSSQLSERVER /f /T3608Voer voor een benoemd exemplaar de volgende opdracht uit:
NET START MSSQL$instancename /f /T3608Zie SQL Server-services starten, stoppen, onderbreken, hervatten en opnieuw startenvoor meer informatie.
Onmiddellijk na het opstarten van de service met traceringsvlag 3608 en
/fstart u een sqlcmd-verbinding met de server om de enkele verbinding te claimen die beschikbaar is. Als u bijvoorbeeld sqlcmd lokaal uitvoert op dezelfde server als het standaardexemplaren (MSSQLSERVER) en verbinding wilt maken met Active Directory integratieverificatie, voert u de volgende opdracht uit:sqlcmdAls u verbinding wilt maken met een benoemd exemplaar op de lokale server, met Active Directory integratieverificatie:
sqlcmd -S localhost\instancenameZie het hulpprogramma sqlcmd voor meer informatie over de sqlcmd-syntaxis.
Als u elk bestand wilt verplaatsen, gebruikt u sqlcmd opdrachten of SQL Server Management Studio om de volgende instructie uit te voeren. Zie sqlcmd : gebruik het hulpprogramma voor meer informatie over het gebruik van het hulpprogramma sqlcmd. Zodra de sqlcmd-sessie is geopend, voert u de volgende instructie één keer uit voor elk bestand dat moet worden verplaatst:
ALTER DATABASE database_name MODIFY FILE (NAME = logical_name, FILENAME = 'new_path\os_file_name'); GOSluit het sqlcmd hulpprogramma of SQL Server Management Studio.
Stop de instantie van SQL Server. Voer bijvoorbeeld uit
NET STOP MSSQLSERVERin de opdrachtregelprompt.Kopieer het bestand of de bestanden naar de nieuwe locatie.
Start het exemplaar van SQL Server opnieuw op. Voer bijvoorbeeld uit
NET START MSSQLSERVERin de opdrachtregelprompt.Controleer de bestandswijziging door de volgende query uit te voeren.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');Aangezien u in stap 7 de databasebestanden hebt gekopieerd in plaats van ze te verplaatsen, kunt u de ongebruikte databasebestanden veilig verwijderen van hun vorige locatie.
De master database verplaatsen
Volg deze stappen om de master database te verplaatsen.
Controleer of het serviceaccount voor de SQL Server Database Engine volledige machtigingen heeft voor de nieuwe locatie van de bestanden. Zie Windows-serviceaccounts en -machtigingen configurerenvoor meer informatie. Als het Database Engine serviceaccount de bestanden op de nieuwe locatie niet kan beheren, wordt het SQL Server exemplaar niet gestart.
Zoek en start SQL Server Configuration Manager in het menu Start. Zie SQL Server Configuration Manager voor meer informatie over de verwachte locatie.
Klik in het knooppunt SQL Server Services met de rechtermuisknop op het exemplaar van SQL Server (bijvoorbeeld SQL Server (MSSQLSERVER)) en kies Eigenschappen.
Selecteer in het dialoogvenster Eigenschappen van SQL Server (instance_name) het tabblad Opstartparameters.
Selecteer de
-dparameter in het vak Bestaande parameters. Wijzig in het vak Een opstartparameter opgeven de parameter in het nieuwe pad van hetmastergegevensbestand . Selecteer Bijwerken om de wijziging op te slaan.Selecteer de
-lparameter in het vak Bestaande parameters. Wijzig in het vak Een opstartparameter opgeven de parameter in het nieuwe pad van hetmasterlogboekbestand . Selecteer Bijwerken om de wijziging op te slaan.De parameterwaarde voor het gegevensbestand moet de
-dparameter volgen en de waarde voor het logboekbestand moet de-lparameter volgen. In het volgende voorbeeld ziet u de parameterwaarden voor de standaardlocatie van hetmastergegevensbestand.-dC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\master.mdf -lC:\Program Files\Microsoft SQL Server\MSSQL<version>.MSSQLSERVER\MSSQL\DATA\mastlog.ldfAls de geplande herlocatie voor het
mastergegevensbestand isE:\SQLData, worden de parameterwaarden als volgt gewijzigd:-dE:\SQLData\master.mdf -lE:\SQLData\mastlog.ldfSelecteer OK om de wijzigingen permanent op te slaan en sluit het dialoogvenster SQL Server (instance_name) Eigenschappen.
Stop het exemplaar van SQL Server door met de rechtermuisknop op de naam van het exemplaar te klikken en Stop te kiezen.
Kopieer de
master.mdfenmastlog.ldfbestanden naar de nieuwe locatie.Start het exemplaar van SQL Server opnieuw op.
Controleer de bestandswijziging voor de
masterdatabase door de volgende query uit te voeren.SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('master');Op dit moment moet SQL Server normaal worden uitgevoerd. Microsoft raadt echter ook aan om de registervermelding aan te passen op
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\instance_ID\Setup, waar instance_ID alsMSSQL13.MSSQLSERVERvolgt is. Wijzig in die component deSQLDataRootwaarde in het nieuwe pad van de nieuwe locatie van demasterdatabasebestanden. Als u het register niet bijwerkt, kan het patchen en upgraden mislukken.Aangezien u in stap 9 de databasebestanden hebt gekopieerd in plaats van ze te verplaatsen, kunt u de ongebruikte databasebestanden veilig van hun vorige locatie verwijderen.
De resourcedatabase verplaatsen
De locatie van de Resource database is \<drive>:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Binn\. De database kan niet worden verplaatst.
Opvolgen: Na het verplaatsen van alle systeemdatabases
Als u alle systeemdatabases naar een nieuw station of volume hebt verplaatst, of naar een andere server met een andere stationsletter, moet u de volgende updates uitvoeren.
Wijzig het SQL Server Agent logboekpad. Als u dit pad niet bijwerkt, kan SQL Server Agent niet worden gestart.
Wijzig de standaardlocatie van de database. Het maken van een nieuwe database kan mislukken als de stationsletter en het pad dat is opgegeven als de standaardlocatie niet bestaan.
Het SQL Server Agent-logboekpad wijzigen
Als u alle systeemdatabases naar een nieuw volume hebt verplaatst of naar een andere server met een andere stationsletter hebt gemigreerd en het pad van het foutenlogboekbestand SQLAGENT.OUT van de SQL Agent niet meer bestaat, moet u de volgende updates uitvoeren.
Vouw vanuit SQL Server Management Studio in ObjectverkennerSQL Server Agent uit.
Klik met de rechtermuisknop op Foutenlogboeken en selecteer Configureren.
Geef in het dialoogvenster SQL Server Agent Foutlogboeken configureren de nieuwe locatie van DE SQLAGENT op. OUT-bestand. De standaardlocatie is
C:\Program Files\Microsoft SQL Server\MSSQL\<version>.<instance_name>\MSSQL\Log\.
De standaardlocatie van de database wijzigen
Maak vanuit SQL Server Management Studio in Objectverkenner verbinding met het gewenste SQL Server exemplaar. Klik met de rechtermuisknop op het exemplaar en selecteer Eigenschappen.
Selecteer Database-instellingen in het dialoogvenster Servereigenschappen.
Blader onder Standaardlocaties voor databases naar de nieuwe locatie voor zowel de gegevens- als logboekbestanden.
Stop en start de SQL Server-service om de wijziging te voltooien.
Examples
Eén. De tempdb database verplaatsen
In het volgende voorbeeld worden de tempdb gegevens en logboekbestanden naar een nieuwe locatie verplaatst als onderdeel van een geplande herlocatie.
Tip
Neem deze gelegenheid om uw tempdb bestanden te controleren voor optimale grootte en plaatsing. Zie Tempdb-prestaties optimaliseren in SQL Server voor meer informatie.
Omdat tempdb telkens wanneer het exemplaar van SQL Server wordt gestart, opnieuw wordt gemaakt, hoeft u de gegevens en logboekbestanden niet fysiek te verplaatsen. De bestanden worden gemaakt op de nieuwe locatie wanneer de service opnieuw wordt opgestart in stap 4. Totdat de service opnieuw wordt opgestart, tempdb blijven de gegevens en logboekbestanden op de bestaande locatie worden gebruikt.
Bepaal de namen van logische bestanden van de
tempdbdatabase en de huidige locatie op de schijf.SELECT name, physical_name AS CurrentLocation FROM sys.master_files WHERE database_id = DB_ID(N'tempdb'); GOControleer of het serviceaccount voor de SQL Server Database Engine volledige machtigingen heeft voor de nieuwe locatie van de bestanden. Zie Windows-serviceaccounts en -machtigingen configurerenvoor meer informatie. Als het Database Engine serviceaccount de bestanden op de nieuwe locatie niet kan beheren, wordt het SQL Server exemplaar niet gestart.
Verander de locatie van elk bestand door gebruik te maken van
ALTER DATABASE.USE master; GO ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf'); GO ALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf'); GOTotdat de service opnieuw wordt opgestart,
tempdbblijven de gegevens en logboekbestanden op de bestaande locatie worden gebruikt.Stop en herstart de instantie van SQL Server.
Controleer de bestandswijziging.
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'tempdb');Verwijder de ongebruikte bestanden van de oorspronkelijke
tempdblocatie.