リモート ホストから 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
ワークステーション名を設定します(設定する場合)。参考文献:
-H ワークステーション名
ワークステーション名。このオプションは、sqlcmd スクリプト変数 SQLCMDWORKSTATION を設定します。ワークステーション名は、sys.processes カタログ ビューのホスト名列にリストされ、ストアド プロシージャ sp_who を使用して返すことができます。このオプションが指定されていない場合、既定値は現在のコンピューター名です。この名前は、さまざまな sqlcmd セッションを識別するために使用できます。
-S
では、インスタンスとともにサーバー名を指定する必要があります。ドットは「ローカル」を意味するため、SQLDOTNET
ローカル マシンで実行されているという名前のインスタンスに接続しようとしています。ドットをリモート SQL サーバーの名前 (または必要に応じてそのアドレス) に置き換える必要があります。
また、最初にサーバーに接続してコマンドを対話的に実行することをお勧めします(テストとして)。使用方法については、こちらをご覧ください。参考文献