0

SQL Server 2008 R2 を使用しています。

データベース テーブルからデータをフェッチし、それを特定の場所の CSV などの出力ファイルに書き込む SQL ジョブを作成しました。

このために私は と を使用bcpしてxp_cmdshellいます。

bcpサーバー名を渡す必要があります。これまで'localhost'サーバー名として使用していましたが、これを別のPCで実行したところ、'localhost'ログインが機能していないため、出力ファイルが生成されていないことがわかりました。

私はそれについて検索し、サーバー名とサーバー インスタンスを返す別のコマンドを取得しました。すなわちSERVERPROPERTY('ServerName')

今、私はそれを使用するために混乱しています。ローカル PC と別の PC でも正常に動作していますが、私の質問は、他のサーバーまたは PC に配置した場合、エラーなしで常に安全に実行されますか? これを使用するのに適しているのはどれですか?

4

1 に答える 1

0

「LocalHost」という用語について混乱していると思います。これは、接続元のマシンを指す単なるエイリアス (別名ループバック) です。

たとえば、私のマシンの名前が MYMACHINE で、その上で既定のインスタンスを実行している場合、LocalHost または MYMACHINE を指定してデータベースに接続し、接続します。他の誰かがマシン YOURMACHINE から接続しようとした場合、MYMACHINE を指定した場合にのみデータベースに接続できます。彼らが LOCALHOST を入力した場合、接続の発信元である YOURMACHINE に接続しようとします。

質問に戻ります。はい、SERVERPROPERTY('ServerName') から servername の値を取得しても安全です。サーバーの正しい現在のネットワーク名が常に報告されるからです。これは @@SERVERNAME には当てはまらないため、目的のためにそれを避ける必要があります。

LocalHost: https://en.wikipedia.org/wiki/Localhost

@@ServiceName (備考セクションの最後の段落が重要です): http://msdn.microsoft.com/en-us/library/ms187944.aspx

PS質問にコメントを追加しなかったことをお詫びしますが、現在、私の評判はそうするほど高くありません.

于 2013-07-10T21:37:02.147 に答える