Не работает sql сервер после переименования компьютера
SQL Server не удалось открыть указанный файл из-за указанной ошибки ОС.
Если SQL Server не удается открыть базу данных и (или) файлы журнала транзакций, в событии приложения Windows или в журнале ошибок SQL Server может отобразиться ошибка 17204. Ниже приведен пример такой ошибки:
Эти ошибки могут возникнуть во время запуска экземпляра SQL Server или любой операции с базой данных, при которой выполняется попытка запустить базу данных (например, ALTER DATABASE). В некоторых сценариях могут возникать ошибки 17204 и 17207, а в некоторых — лишь одна из них.
Если такие ошибки происходят в пользовательской базе данных, она остается в состоянии RECOVERY_PENDING, а приложения не могут получить доступ к базе данных. Если такие ошибки происходят в системной базе данных, экземпляр SQL Server не запускается и вы не можете подключиться к SQL Server. Сбой системной базы данных может привести к переходу ресурса отказоустойчивого кластера SQL Server в автономный режим.
Переименование компьютера, на котором расположен изолированный экземпляр SQL Server
Для компьютера с измененным именем, на котором установлен экземпляр SQL Serverпо умолчанию, следует выполнить следующие процедуры.
Повторно запустите экземпляр SQL Server.
Для компьютера с измененным именем, на котором установлен именованный экземпляр SQL Server, следует выполнить следующие процедуры.
Повторно запустите экземпляр SQL Server.
Причина
Прежде чем можно будет использовать базу данных SQL Server, ее необходимо запустить. Процесс запуска базы данных включает в себя следующее:
- инициализацию различных структур данных, представляющих базу данных и ее файлы;
- открытие всех файлов, принадлежащих к базе данных;
- выполнение восстановления базы данных.
SQL Server использует функцию API CreateFile в Windows для открытия файлов, принадлежащих базе данных.
- В FCB::Open — произошла ошибка при попытке SQL Server открыть файл.
- FileMgr::StartPrimaryDataFiles — первичный файл данных или файл, принадлежащий первичной файловой группе.
- FileMgr::StartSecondaryDataFiles — файл, принадлежащий вторичной файловой группе.
- FileMgr::StartLogFiles — файл журнала транзакций.
- STREAMFCB::Startup — контейнер SQL FileStream.
- FCB::RemoveAlternateStreams
Полный физический путь к файлу.
Идентификатор файла, соответствующий файлу.
Код ошибки операционной системы и описание ошибки. В некоторых экземплярах вы увидите только код ошибки.
Объекты поддержки диаграмм базы данных SQL Server Management Studio не могут быть установлены
Дополнительные сведения
Удаленные имена входа — если на компьютере имеются удаленные имена входа, при запуске хранимой процедуры sp_dropserver может возникнуть ошибка, аналогичная следующей:
Server: Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 44 There are still remote logins for the server 'SERVER1'.
Переименование компьютера, на котором расположен изолированный экземпляр SQL Server
Для компьютера с измененным именем, на котором установлен экземпляр SQL Serverпо умолчанию, следует выполнить следующие процедуры.
Повторно запустите экземпляр SQL Server.
Для компьютера с измененным именем, на котором установлен именованный экземпляр SQL Server, следует выполнить следующие процедуры.
Повторно запустите экземпляр SQL Server.
Дополнительные сведения
Удаленные имена входа — если на компьютере имеются удаленные имена входа, при запуске хранимой процедуры sp_dropserver может возникнуть ошибка, аналогичная следующей:
Server: Msg 15190, Level 16, State 1, Procedure sp_dropserver, Line 44 There are still remote logins for the server 'SERVER1'.
Проблема
Проверка операции переименования
Выберите данные из @@SERVERNAME или sys.servers. Функция @@SERVERNAME возвращает новое имя, а в таблице sys.servers отображается новое имя. В следующем примере показано использование @@SERVERNAME .
После операции переименования
После переименования компьютера все соединения, которые используют прежнее имя, должны подключаться с помощью нового имени.
Сброс удаленных входов в систему
В случае с экземпляром по умолчанию, выполните следующие действия:
В случае с именованным экземпляром, выполните следующие действия:
Конфигурации связанных серверов . Операция переименования компьютера повлияет на конфигурации связанных серверов. Для обновления ссылок на имена компьютеров используйте хранимые процедуры sp_addlinkedserver или sp_setnetname. Дополнительные сведения см. в статье sp_addlinkedserver (Transact-SQL) или sp_setnetname (Transact-SQL).
Имена-псевдонимы клиентов. Операция переименования компьютера повлияет на псевдонимы клиентов, в которых используются именованные каналы. Например, если псевдоним «PROD_SRVR» указывает на SRVR1 и в нем используется протокол именованных каналов, то имя канала будет выглядеть следующим образом: \\SRVR1\pipe\sql\query . После переименования компьютера путь именованного канала станет недействительным. Дополнительные сведения об именованных каналах см. в разделе Создание допустимой строки подключения, использующей протокол именованных каналов.
Если изменить имя компьютера, на котором работает SQL Server, новое имя будет распознано в момент следующего запуска SQL Server . Не нужно заново запускать программу установки, чтобы изменить имя компьютера. Вместо этого следует выполнить следующие шаги для обновления системных метаданных, хранимых в представлении каталога sys.servers и возвращаемых системной функцией @@SERVERNAME . Обновите системные метаданные таким образом, чтобы отразить в них изменения в именах компьютеров для удаленных соединений и приложений, в которых используется системная функция @@SERVERNAME или которые запрашивают имя сервера в представлении каталога sys.servers.
Следующие действия нельзя использовать для переименования экземпляра SQL Server. Ими можно воспользоваться только для изменения части имени экземпляра, соответствующей имени компьютера. Например, можно изменить имя компьютера MB1, на котором расположен экземпляр SQL Server с именем Instance1, на другое имя, например MB2. Однако часть имени, представляющая собой имя экземпляра (Instance1), останется неизменной. В данном примере \\ИмяКомпьютера\ИмяЭкземпляра изменится с \\MB1\Instance1 на \\MB2\Instance1.
Before you begin
Прежде чем приступить к процессу переименования, обратите внимание на следующее:
Если экземпляр SQL Server является частью отказоустойчивого кластера SQL Server , переименование компьютера выполняется не так, как для изолированного экземпляра. Дополнительные сведения см. в статье Переименование экземпляра отказоустойчивого кластера SQL Server.
SQL Server не поддерживает переименование компьютеров, участвующих в репликации, за исключением репликации с доставкой журналов. Компьютер-получатель в доставке журнала может быть переименован, если компьютер-источник окончательно потерян. Дополнительные сведения см. в статье Репликация и доставка журналов (SQL Server).
После переименования компьютера, настроенного для использования служб Службы Reporting Services, Службы Reporting Services могут оказаться недоступными. Дополнительные сведения см. в разделе Переименование компьютера, на котором установлен сервер отчетов.
Если компьютер настроен для использования зеркального отображения базы данных, перед его переименованием оно должно быть отключено. После этого зеркальное отображение необходимо вновь установить для нового имени компьютера. Метаданные для зеркального отображения базы данных не будут обновлены автоматически для отражения нового имени компьютера. Выполните следующие шаги, чтобы обновить системные метаданные.
Пользователи, которые подключаются к SQL Server через группу Windows, в которой имя компьютера задано жестко, могут лишиться возможности подключения к SQL Server. Это может произойти после переименования, если в группе Windows останется прежнее имя компьютера. Чтобы убедиться в том, что возможно соединение с SQL Server с использованием таких групп Windows после операции переименования, обновите группу Windows для указания нового имени компьютера.
Подключение к SQL Server с помощью нового имени компьютера станет возможно после перезапуска SQL Server. Чтобы убедиться в том, что системная функция @@SERVERNAME возвращает новое имя локального экземпляра сервера, необходимо вручную выполнить следующую процедуру, применяющуюся в сценарии пользователя. Какая именно процедура должна быть выполнена, зависит от того, установлен ли на компьютере именованный экземпляр SQL Serverили экземпляр по умолчанию.
После операции переименования
После переименования компьютера все соединения, которые используют прежнее имя, должны подключаться с помощью нового имени.
Сброс удаленных входов в систему
В случае с экземпляром по умолчанию, выполните следующие действия:
В случае с именованным экземпляром, выполните следующие действия:
Конфигурации связанных серверов . Операция переименования компьютера повлияет на конфигурации связанных серверов. Для обновления ссылок на имена компьютеров используйте хранимые процедуры sp_addlinkedserver или sp_setnetname. Дополнительные сведения см. в статье sp_addlinkedserver (Transact-SQL) или sp_setnetname (Transact-SQL).
Имена-псевдонимы клиентов. Операция переименования компьютера повлияет на псевдонимы клиентов, в которых используются именованные каналы. Например, если псевдоним «PROD_SRVR» указывает на SRVR1 и в нем используется протокол именованных каналов, то имя канала будет выглядеть следующим образом: \\SRVR1\pipe\sql\query . После переименования компьютера путь именованного канала станет недействительным. Дополнительные сведения об именованных каналах см. в разделе Создание допустимой строки подключения, использующей протокол именованных каналов.
14.11.2016
itpro
SQL Server
Один комментарий
При установке Microsoft SQL Server, внутреннее имя экземпляра SQL сервера создается на основании текущего имени хоста. Однако, при переименовании компьютера/сервера, имя SQL сервера в метаданных (хранится в sys.servers ) не обновляется автоматически, в результате чего при работе с SQL могут возникать разные проблемы. В этой инструкции мы покажем, как корректно обновить метаданные в SQL и изменить имя сервера без полной переустановки MSSQL. Инструкция применима для отдельно стоящего (не кластерного) SQL Server версий от MS SQL 2000 до 2012.
Совет. Можно сменить только имя севера, изменить имя экземпляра (инстанса) SQL Server без переустановки нельзя.
Откройте консоль SQL Server Management Studio и с помощью следующего запроса проверьте текущее имя хоста и имя инстанса SQL:
Select @@ServerName ServerName, Host_name() HostName
- Имя сервера (HostName): DESKTOP-V2OE3P0
- Полное имя экземпляра SQL (ServerName): DESKTOP-V2OE3P0\SQLDB
Переименуем имя компьютер и перезагрузим его:
Rename-Computer -NewName Sql-Srv1 -Restart
После перезагрузки попробуйте подключится к старому имени сервера SQL: DESKTOP-V2OE3P0\SQLDB. Появится ошибка, ведь имя сервера изменилось.
Cannot connect to DESKTOP-V2OE3P0\SQLDB.
A network-related or Instant-specific error occurred when establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interface, error: 26 – Error Locating Server/Instance Specified) (Microsoft SQL Server)
Еще раз проверим имя хоста и имя инстанса:
Select @@ServerName ServerName, Host_name() HostName
В данном случае имя инстанса не соответствует имени компьютера и ссылается на старое имя компьютера DESKTOP-V2OE3P0.
Чтобы изменить имя для именованного экземпляра SQL, выполните следующую команду TSQL.
Удалить старое имя:
Добавим новое имя:
sp_addserver "Sql-Srv1\SQLDB", local;
GO
Если нужно сменить имя сервера у дефолтного экземпляра SQL Server команда такая:
sp_dropserver ″OldName″;
GO
sp_addserver ″NewName″, local;
GO
Если при выполнении команды sp_dropserver появится ошибка:
Скорее всего, имеются удаленные подключения к серверу DESKTOP-V2OE3P0. Сбросить их можно такими командами. Для дефолтного инстанса:
Проверим, что имя сервера в метаданных обновилось:
SELECT @@SERVERNAME AS ‘ServerName’
SELECT * FROM SYS.SERVERS
Как вы видите, имя сервера изменилось. Осталось перезапустить службу SQL Server:
net stop MSSQL$SQLDB && net start MSSQL$SQLDB
Важно!
Предыдущая статья Следующая статья
Получение привилегии SeDebugPrivilege при включенной политике Debug Program
Как урезать транзакционные логи в SQL Server 2012
Как сбросить пароль SA в Microsoft SQL Server?
бредовая статья. как выполнить запрос если невозможно подключиться к серверу.
Действие пользователя
Для устранения ошибки 17204 необходимо узнать соответствующий код ошибки операционной системы. А затем выполнить диагностику этой ошибки. После устранения ошибки операционной системы можно попытаться перезапустить базу данных (например, с помощью инструкции ALTER DATABASE SET ONLINE) или экземпляр SQL Server, чтобы перевести затронутую базу данных в режим "в сети". Иногда устранить ошибку операционной системы не удается. В таком случае необходимо выполнить определенные корректирующие действия. Мы обсудим их в этом разделе.
В случае возникновения ошибки операционной системы 5 ( Access is Denied ), рассмотрите следующие методы устранения:
Проверьте учетную запись пользователя, от имени которой сейчас запущена служба SQL Server. Для получения этих сведений можно использовать диспетчер задач Windows. Найдите значение "Имя пользователя" для исполняемого файла "sqlservr.exe". Если вы недавно изменили учетную запись службы SQL Server, поддерживаемым способом выполнения этой операции является использование служебной программы "Диспетчер конфигурации SQL Server". Дополнительные сведения см. в статье Диспетчер конфигурации SQL Server.
В зависимости от типа операции — открытие баз данных во время запуска сервера, присоединение базы данных, восстановление базы данных и т. д. — учетная запись, используемая для олицетворения и получения доступа к файлу базы данных, может варьироваться. Сведения о том, какая операция позволяет задавать разрешения к каким учетным записям, см. в статье Защита данных и файлов журналов. Используйте такие средства, как Process Monitor, чтобы узнать, каким образом предоставляется доступ к файлу: в контексте безопасности учетной записи запуска службы экземпляра SQL Server (или идентификатора безопасности службы) либо олицетворенной учетной записи.
Если SQL Server олицетворяет учетные данные пользователя, выполняющего операцию ALTER DATABASE или CREATE DATABASE, в средстве Process Monitor отобразятся следующие сведения (пример):
Если вы получаете ошибку ОС The system cannot find the file specified = 3
Если возникает ошибка операционной системы The process cannot access the file because it is being used by another process = 32
Если изменить имя компьютера, на котором работает SQL Server, новое имя будет распознано в момент следующего запуска SQL Server . Не нужно заново запускать программу установки, чтобы изменить имя компьютера. Вместо этого следует выполнить следующие шаги для обновления системных метаданных, хранимых в представлении каталога sys.servers и возвращаемых системной функцией @@SERVERNAME . Обновите системные метаданные таким образом, чтобы отразить в них изменения в именах компьютеров для удаленных соединений и приложений, в которых используется системная функция @@SERVERNAME или которые запрашивают имя сервера в представлении каталога sys.servers.
Следующие действия нельзя использовать для переименования экземпляра SQL Server. Ими можно воспользоваться только для изменения части имени экземпляра, соответствующей имени компьютера. Например, можно изменить имя компьютера MB1, на котором расположен экземпляр SQL Server с именем Instance1, на другое имя, например MB2. Однако часть имени, представляющая собой имя экземпляра (Instance1), останется неизменной. В данном примере \\ИмяКомпьютера\ИмяЭкземпляра изменится с \\MB1\Instance1 на \\MB2\Instance1.
Before you begin
Прежде чем приступить к процессу переименования, обратите внимание на следующее:
Если экземпляр SQL Server является частью отказоустойчивого кластера SQL Server , переименование компьютера выполняется не так, как для изолированного экземпляра. Дополнительные сведения см. в статье Переименование экземпляра отказоустойчивого кластера SQL Server.
SQL Server не поддерживает переименование компьютеров, участвующих в репликации, за исключением репликации с доставкой журналов. Компьютер-получатель в доставке журнала может быть переименован, если компьютер-источник окончательно потерян. Дополнительные сведения см. в статье Репликация и доставка журналов (SQL Server).
После переименования компьютера, настроенного для использования служб Службы Reporting Services, Службы Reporting Services могут оказаться недоступными. Дополнительные сведения см. в разделе Переименование компьютера, на котором установлен сервер отчетов.
Если компьютер настроен для использования зеркального отображения базы данных, перед его переименованием оно должно быть отключено. После этого зеркальное отображение необходимо вновь установить для нового имени компьютера. Метаданные для зеркального отображения базы данных не будут обновлены автоматически для отражения нового имени компьютера. Выполните следующие шаги, чтобы обновить системные метаданные.
Пользователи, которые подключаются к SQL Server через группу Windows, в которой имя компьютера задано жестко, могут лишиться возможности подключения к SQL Server. Это может произойти после переименования, если в группе Windows останется прежнее имя компьютера. Чтобы убедиться в том, что возможно соединение с SQL Server с использованием таких групп Windows после операции переименования, обновите группу Windows для указания нового имени компьютера.
Подключение к SQL Server с помощью нового имени компьютера станет возможно после перезапуска SQL Server. Чтобы убедиться в том, что системная функция @@SERVERNAME возвращает новое имя локального экземпляра сервера, необходимо вручную выполнить следующую процедуру, применяющуюся в сценарии пользователя. Какая именно процедура должна быть выполнена, зависит от того, установлен ли на компьютере именованный экземпляр SQL Serverили экземпляр по умолчанию.
Решение
Т.е. диаграмма не может быть создана, поскольку база данных не имеет допустимого владельца. Поэтому давайте проверим, кто является владельцем базы данных. Для этого щелкнем правой кнопкой на базе данных и выберем "Properties" (свойства):
Когда откроется окно свойств базы данных, на вкладке данные мы можем увидеть владельца, которым является пользователь "MYPC\Administrator":
Мы можем найти соответствующий логин, используя ветку "Security" > "Logins". Тут мы можем обнаружить логин "MYPC\Administrator" и, если открыть его свойства, то можем увидеть, что он имеет членство в роли "db_owner" (владелец БД) для TestDB.
Мы уже знаем, что имя компьютера не "MYPC" и, следовательно, у нас не должно быть такого пользователя. В свойствах компьютера мы можем еще раз это проверить и подтвердить, что компьютер имеет новое имя - "DBSERVER1":
Кроме того, когда мы подключаемся к экземпляру SQL Server, мы указываем новое имя сервера и используем "DBSERVER1\Administrator" в качестве логина Windows:
Можно догадаться, что "MYPC\Administrator" стало неверным именем для логина. Следовательно, нужно изменить его на правильное имя "DBSERVER1\Administrator". Мы можем сделать это, щелкнув правой кнопкой на логине и выбрав команду "Rename" (переименовать):
Теперь, после набора нового имени логина, мы можем увидеть логин "DBSERVER1\Administrator" в нашем списке логинов:
Если сейчас открыть свойства базы данных TestDB, то мы увидим, что имя владельца автоматически поменялось:
Таким образом, мы установили правильное имя для владельца базы данных, и создание диаграммы базы данных теперь должно работать.
Теперь мы можем успешно создать и сохранить диаграмму базы данных:
Таким образом, наша проблема легко разрешилась изменением унаследованного имени на логин Windows, который является владельцем базы данных в соответствии с новым именем компьютера хоста.
Заключение
Если владельцем базы данных является логин, имя которого стало неверным после переименования компьютера хоста, это может вызвать некоторые проблемы. Невозможность создания диаграммы базы данных является одним из примеров. Таким образом, если компьютер переименовывается после установки на нем SQL Server, наряду с другими связанными изменениями важно также переименовать соответствующие логины, которые использовали предыдущее имя компьютера.
Проверка операции переименования
Выберите данные из @@SERVERNAME или sys.servers. Функция @@SERVERNAME возвращает новое имя, а в таблице sys.servers отображается новое имя. В следующем примере показано использование @@SERVERNAME .
Читайте также: