Я хочу выполнить резервное копирование базы данных через SQLCMD с удаленного хоста.
Моя команда, которую я использую, выглядит так:
sqlcmd -H IP.OF.Machine -S .\SQLDOTNET -U User -P Password -Q "Backup Database [database_name] TO DISK= 'C:\backups\backup.bak'"
При выполнении этого кода я получаю ошибку:
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : SQL Server
Network Interfaces: Error Locating Server/Instance Specified
[xFFFFFFFF]. .
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout
expired.
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A
network-related or instance-specific error has occurred while
establishing a connection to SQL Server. Server is not found or not
accessible. Check if instance name is correct and if SQL Server is
configured to allow remote connections. For more information see SQL
Server Books Online..
Я дважды проверил, принимает ли мой сервер удаленное управление (Сервер => Свойства сервера => Подключения => удаленное подключение отмечено галочкой).
Когда я выполняю команду на сервере базы данных, резервная копия создается правильно.
Есть ли какое-то свойство или конфигурация сервера, которое я здесь упускаю?
решение1
-H
устанавливает имя вашей рабочей станции (если вы хотите его задать).https://msdn.microsoft.com/en-us/library/ms162773%28v=sql.110%29.aspx:
-H имя_рабочей_станции
Имя рабочей станции. Этот параметр задает переменную скрипта sqlcmd SQLCMDWORKSTATION. Имя рабочей станции указано в столбце hostname представления каталога sys.processes и может быть возвращено с помощью хранимой процедуры sp_who. Если этот параметр не указан, по умолчанию используется текущее имя компьютера. Это имя можно использовать для идентификации различных сеансов sqlcmd.
Вам необходимо указать имя сервера в -S
, вместе с экземпляром. Точка означает «локальный», поэтому вы пытаетесь подключиться к экземпляру с именем, SQLDOTNET
запущенному на вашей локальной машине. Вам необходимо заменить точку на имя вашего удаленного сервера SQL (или его адрес, если вам так больше нравится).
Я бы также посоветовал сначала подключиться к серверу и запустить команды в интерактивном режиме (в качестве теста). Смотрите здесь использование:https://msdn.microsoft.com/en-us/library/ms180944%28v=sql.110%29.aspx