Erstellen Sie eine Datenbanksicherung mit sqlcmd vom Remote-Host

Erstellen Sie eine Datenbanksicherung mit sqlcmd vom Remote-Host

Ich möchte von einem Remote-Host aus eine Datenbanksicherung über SQLCMD durchführen.

Der von mir verwendete Befehl sieht folgendermaßen aus:

sqlcmd -H IP.OF.Machine -S .\SQLDOTNET -U User -P Password -Q "Backup Database [database_name] TO DISK= 'C:\backups\backup.bak'"

Wenn ich dies ausführe, erhalte ich eine Fehlermeldung:

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..

Ich habe doppelt überprüft, ob mein Server Fernsteuerung akzeptiert (Server => Servereigenschaften => Verbindungen => Fernverbindung ist aktiviert).

Wenn ich den Befehl auf dem Datenbankserver ausführe, wird das Backup ordnungsgemäß erstellt.

Gibt es eine Eigenschaft oder Konfiguration des Servers, die ich hier übersehe?

Antwort1

-Hlegt den Namen Ihrer Arbeitsstation fest (falls Sie ihn festlegen möchten). Vonhttps://msdn.microsoft.com/en-us/library/ms162773%28v=sql.110%29.aspx:

-H Arbeitsstationsname

Ein Arbeitsstationsname. Diese Option legt die SQLCMD-Skriptvariable SQLCMDWORKSTATION fest. Der Arbeitsstationsname wird in der Spalte „Hostname“ der sys.processes-Katalogansicht aufgeführt und kann mithilfe der gespeicherten Prozedur „sp_who“ zurückgegeben werden. Wenn diese Option nicht angegeben ist, ist der Standardwert der aktuelle Computername. Dieser Name kann verwendet werden, um verschiedene SQLCMD-Sitzungen zu identifizieren.

Sie müssen den Servernamen -Szusammen mit der Instanz angeben. Ein Punkt bedeutet „lokal“, Sie versuchen also, eine Verbindung mit der Instanz namens herzustellen, die SQLDOTNETauf Ihrem lokalen Computer ausgeführt wird. Sie müssen den Punkt durch den Namen Ihres Remote-SQL-Servers ersetzen (oder dessen Adresse, wenn Sie dies bevorzugen).

Ich würde auch empfehlen, sich mit dem Server zu verbinden und Ihre Befehle zunächst interaktiv auszuführen (als Test). Informationen zur Verwendung finden Sie hier:https://msdn.microsoft.com/en-us/library/ms180944%28v=sql.110%29.aspx

verwandte Informationen