我想从远程主机通过 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。工作站名称列在 sys.processes 目录视图的 hostname 列中,可以使用存储过程 sp_who 返回。如果未指定此选项,则默认为当前计算机名称。此名称可用于识别不同的 sqlcmd 会话。
您需要在 中指定服务器名称-S
以及实例。点表示“本地”,因此您尝试连接SQLDOTNET
在本地计算机上运行的名为的实例。您需要将点替换为远程 SQL 服务器的名称(或者如果您愿意,也可以替换为它的地址)。
我还建议先连接到服务器并以交互方式运行命令(作为测试)。请参阅此处了解用法:https://msdn.microsoft.com/en-us/library/ms180944%28v=sql.110%29.aspx