web-dev-qa-db-ja.com

2つのサーバー間で共有フォルダーを作成する

2つのデータベース間で出荷されるSQLログを作成する必要があります。

ソースは、Windows Server 2008R2およびSQLServer2008を実行しているAWSEC2インスタンス上にあります

宛先は、Windowsデータセンター2012とSQL Server2012を実行しているAzure VM

このプロセスには、以下が必要です。

  • A.ソースサーバーがファイルを書き込む

    B.宛先サーバーはファイルをその上のローカルフォルダーにコピーします

    C.宛先サーバーがファイルを使用する

これらのタスクはすべて、SQLサーバープロセスによって実行されます

インスタンス間に共有フォルダを作成する際に問題が発生しました。次のことを試みました。

ステップAは、マシン上のローカルフォルダーに対して実行されます。

手順bで、SQLサーバーはこの形式を使用してそのフォルダーにアクセスしようとします(ファイルをフォルダーからローカルフォルダーにコピーします)。

\\serveraddress\drive$\folder

ソースサーバー内のそのフォルダーへのすべてのユーザーへのアクセスを許可し、共有を有効にしてゲストユーザーを有効にした後

それでもアクセスの問題が発生し続け、コピープロセスが失敗します。

何をすべきですか?

ありがとう

編集:

提案された解決策のいずれかを試しても成功しませんでした。SQLサーバーが、ユーザーがアクセスしたフォルダーにアクセスできなかった理由がいくつかあります。

そのため、それを掘り下げる代わりに、サードパーティのソフトウェアを使用して、dropbox/svnなどの2つのサーバー間で情報を同期することを選択しました。両方のサーバーの共有フォルダーに同じ場所を使用することで、非常に簡単な方法で実行できました。ネットワークの場所を使用します。

\\localhost\...

両方のコンピューターはネットワーク上にあるかのように動作しますが、フォルダーはローカルインスタンスで同期および共有されているため、アクセス許可の問題はありませんでした。

理想的な解決策ではありませんが、機能します。

1
Matan L

ユーザーとサーバーはすべて同じActiveDirectoryドメインにありますか、それともソースサーバーによって信頼されているドメインにありますか?そうでない場合、ユーザーはネットワークを介して匿名でログオンしようとしています。 2003/XP以降のWindowsバージョンでは、Everyoneグループにその権限が付与されていません。 ANONYMOUSLOGONおよびNETWORKグループにアクセス許可を付与する必要があります。

1
Adi Inbar

第一歩。 <drive> $共有は使用しないでください。これらは管理共有であり、管理者権限が必要です。

次に、ターゲットサーバーで:

独自の共有を作成します。例:

net share LOG_SHIPPING=d:\data\log_shipping /grant:everyone,full /cache:none /remark:"something meaningful"

ターゲットサーバーにローカルアカウントを作成します。

Net User log_shipping_user <PASSWORD> /comment:"something meaningful" /passwordchq:no /add

権限を適切に設定します。例:

icacls d:\data\log_shipping /grant "log_shipping_user:(OI)(CI)(M)"

次に、ソースサーバーで、上記のユーザーを使用してインバウンド接続を確立します。

Net Use \\<TARGET SERVER>\log_shipping /user:<TARGET_SERVER>\log_shipping_user /password:<PASSWORD>

それはうまくいくはずです。反対方向の接続についても同じようにします。

1
Simon Catlin