Instalacja SQL Server do domyślnych katalogach mogą być trudne do maintan przede wszystkim dlatego, Microsoft zmienia domyślną ścieżkę do katalogu danych w każdej wersji głównej. Na przykład domyślne ścieżki do plików bazy danych dla instancji domyślnej w SQL 2005-2008 R2 są:
SQL 2005 -% Program Files% \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ Data
SQL 2008 -% Program Files% \ Microsoft SQL Server \ MSSQL10.MSSQLSERVER \ MSSQL \ Data
SQL 2008 R2 -% Program Files% \ DATA Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \
Wykonywanie przywracania bazy danych z jednego serwera na inny z różnymi wersjami może dodać złożoności z poleceniem restore ponieważ ścieżka docelowa nie jest spójna. Również po aktualizacji w miejscu SQL Server pliki bazy danych nie zostały przeniesione z poprzedniej domyślnej ścieżce do nowego więc serwer może mieć MDF i LDF pliki w katalogu z łudząco nazwie ścieżki.
Korzystanie z katalogu Standardowy
Mam standaryzowane moje instalacje użyć tej samej ścieżki dla wszystkich lokalizacjach MDF i LDF plików. Upraszcza to odbudowała skryptów i zmniejsza złożoność podczas migracji, ponieważ wszystkie pliki danych na wszystkich serwerach są w tej samej ścieżce. I zawsze moje pliki dziennika na osobnym dysku z plików danych są więc w tych samych ścieżek na różnych dyskach, na przykład:
Logs – y:\mssql\%instanceName%\data
Data – z:\mssql\%instanceName%\data
Po zainstalowaniu i wszystkich plikach mdf i ldf znajdują się w nowych, ulepszonych lokalizacjach standardowych, znalazłem trzy dodatkowe katalogi, które chciałem ujednolicić i przejść do domyślnej ścieżki:
Konfiguracja nie jest dostępna za pośrednictwem interfejsu GUI SSMS lub podczas instalacji. Jedynym sposobem ich zmiany są bezpośrednio w rejestrze lub za pomocą skryptu t-sql, który zmienia rejestr.
Oto skrypt, który zmieni je na dowolną ścieżkę wybranej ścieżki i ma świadomość, że poprawny klucz rejestru jest aktualizowany dla dowolnej instancji. Uwaga – ten skrypt używa procedury rozszerzonej xp_instance _regwrite,
w przyszłości może nie działać .
USE [msdb]
GO
-- change the @instancename to whatever named instance this is for, the rest will sort itself out ----------------------
DECLARE @instancename nvarchar(255) = N'mssqlserver' -- use 'mssqlserver' for the default instance
DECLARE @mssqlpath nvarchar(255) = N'z:\mssql\' + @instancename
DECLARE @dbengine_defaultbackup_path nvarchar(255) = @mssqlpath + N'\backup'
DECLARE @sqlagent_errorlogfile nvarchar(255) = @mssqlpath + N'\log\SQLAGENT.OUT'
DECLARE @sqlagent_workingdirectory_path nvarchar(255) = @mssqlpath + N'\jobs'
--SELECT @dbengine_defaultbackup_path, @sqlagent_workingdirectory_path, @sqlagent_errorlogfile
-- update the database engine's default backup directory path ---------------------------------------------------------
EXECUTE [master].dbo.xp_instance_regwrite
N'HKEY_LOCAL_MACHINE'
, N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer'
, N'BackupDirectory'
, N'REG_SZ'
, @dbengine_defaultbackup_path
-- update the SQL Agent working directory -----------------------------------------------------------------------------
EXECUTE [master].dbo.xp_instance_regwrite
N'HKEY_LOCAL_MACHINE'
, N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent'
, N'WorkingDirectory'
, N'REG_SZ'
, @sqlagent_workingdirectory_path
-- update the SQL Agent log file location -----------------------------------------------------------------------------
EXECUTE msdb.dbo.sp_set_sqlagent_properties @errorlog_file = @sqlagent_errorlogfile
-- update the setup's SQL Data Root path ------------------------------------------------------------------------------
EXECUTE [master].dbo.xp_instance_regwrite
N'HKEY_LOCAL_MACHINE'
, N'SOFTWARE\Microsoft\MSSQLServer\Setup'
, N'SQLDataRoot'
, N'REG_SZ'
, @mssqlpath
Zmodyfikuj skrypt, aby używać dowolnej ścieżki domyślnej. Usługi SQL Server i SQL Agent będą musiały zostać ponownie uruchomione, aby rozpocząć korzystanie z nowych lokalizacji plików. Gdy nowe lokalizacje są w użyciu, możesz usunąć stare katalogi.
Aktualizacja
Po próbie uaktualnienia jednego z moich serwerów do programu SQL Server 2012 stwierdziłem, że instalator miałby błąd podczas instalowania silnika bazy danych. Bałagan był:
“The Database Engine system data directory in the registry is not valid.”
Znalazłem klucz HKLM\software\microsoft\microsoft sql server\%instance_name%\setup\SQLDataRoot .Odszukuje ścieżkę dostępu do baz danych systemu. Ten klucz został utworzony podczas instalacji 2008 R2 i pliki zostały następnie przeniesione, więc to, co zostało utworzone w czasie instalacji, nie jest poprawne.
Jeśli zmodyfikujesz ten klucz na ścieżce skonfigurowanej w pliku @mssqlpath ze skryptu powyżej instalatora 2012, działa prawidłowo. Zmieniłem również skrypt, ostatnia sekcja wprowadza odpowiednią zmianę w celu uniknięcia tego wyjątku w przyszłości.
Pytanie – „Co zrobisz, gdy plik dziennika tempdb jest pełny , lub jest potrzeba przenieść go na szybszy dysk?”
Odpowiedź – najlepsze rozwiązanie, gdy plik dziennika tempdb jest pełny jest, aby przenieść je do nowego napędu.
Przeniesienie tempdb z jednego dysku na inny dysk.
Istnieją poważne dwa powody tempdb musi przenieść się z jednego dysku na inny dysk.
1) tempdb może chcieć więcej miejsca niż mamy dostępne na dysku .
2) Przeniesienie tempdb do innej grupy plików, który znajduje się na innym dysku fizycznym przyczynia się do poprawy odczytu dysku bazy danych, ponieważ mogą one być odczytywane jednocześnie.
Śledzić kierunek poniżej dokładnie przenieść bazę danych i logowania z jednego dysku (C 🙂 na inny dysk (d 🙂 i (E :).
Otwórz Query i połączyć się z serwerem. Uruchom ten skrypt, aby uzyskać nazwy plików wykorzystywanych do tempdb.
USE TempDBGOEXECsp_helpfileGO
Nazwy plików są zwykle tempdev i templog domyślnie.
Nazwy te zostaną wykorzystane w kolejnym komunikacie.
Uruchom poniższy kod, aby przenieść MDF i LDF pliki.
USE MASTER
GO
ALTERDATABASETempDB MODIFYFILE
(NAME= tempdev, FILENAME = 'd:\datatempdb.mdf')
GO
ALTERDATABASETempDB MODIFYFILE
(NAME= templog, FILENAME = 'e:\datatemplog.ldf')
GO
Definicja tempdb jest zmieniany.
Jednakże, żadne zmiany nie są dostępne aż do ponownego uruchomieniu SQL Server.
Proszę zatrzymać i ponownie uruchomić SQL Server i SQL będzie tworzyć pliki tempdb w nowych lokalizacjach.
Długo niewłączany PC (np. 60 dni) traci połączenie z domeną – nie można się zalogować przy użyciu konta domenowego. Można naprawić to logując się na konto lokalnego admina, odłączyć PC od domeny i ponownie podpiąć.
Właściwe pytanie brzmi: czy można to zrobić szybciej, łatwiej, efektywniej np. z linii komend?
Dzięki planetcoop, teraz mamy dwa serwery publiczne BTEST MikroTik możemy przetestować, łącze
oba serwery działają BTEST MikroTik Chr.
oba są na połączeniach internetowych 10-Gig. To jednak nie oznacza, jesteś w stanie przetestować pełną 10-gig.
oto informacje: planetcoop btest server:
Host: btest.planetcoop.com
ipv4: 50.235.23.218
ipv6: 2001:559:8062::20
user and pass: btest
traffic graph of this btest server: https://btest.planetcoop.com:10443/graphs/iface/ether1/