13

SQL Server 2005 サーバーで保守計画を作成しました。バックアップは別のサーバーに書き込む必要があります。これには UNC パスを使用しています。SQL エージェント ジョブを実行しているユーザーは、他のサーバーへのフル アクセスを持っています。両方のサーバーの管理者です。

問題は、このステートメントが失敗することです(もちろん正しいサーバー名があります):

EXECUTE master.dbo.xp_create_subdir N'\\servername\c$\SqlServerBackup\Test'

表示されるエラー: Msg 22048, Level 16, State 1, Line 0 xp_create_subdir() がエラー 123、「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません」を返しました。

何が問題なのか誰か知っていますか?

4

7 に答える 7

23

自分でこの問題を抱えた後、上記の解決策のどれも十分に明確ではなかったので、私はより明確な応答を投稿すると思いました。エラーは実際には構文とは関係ありません-それは完全に権限と関係があります。ここで重要なのは、ログインしてディレクトリを作成しようとするのはSQLServerエージェントアカウントではなくSQLServerサービスアカウントであるということです。ターゲットサーバーのイベントビューアを確認し、セキュリティログを調べて、他のマシンのSQL Serverアカウントからのログインの失敗を確認できます(私の場合はローカル管理者として実行されていました)。

これを解決するには、SQL Serverサービスアカウントを、リモート共有への書き込みを許可されているドメインユーザーに設定します。SQL Serverエージェントが独自の資格情報を使用してこれらのバックアップ操作を実行できることを期待していましたが、明らかにそうではありませんでした。

于 2009-05-15T16:00:23.577 に答える
3

SQL エージェントは実際にはバックアップを実行しません。バックアップを実行する SQL Server でコマンドを実行できます。したがって、SQL Server サービス アカウントは、UNC 共有へのアクセス許可が必要なアカウントです。

ただし、xp_create_subdir プロシージャには実際の問題があると思います。まったく同じエラーが時々発生するため、メンテナンス プランの使用を停止します。権限は変更されておらず、「通常」は機能しますが、「通常」はそれをカットしません。

于 2009-11-17T04:02:03.600 に答える
2

SQL Server および/または SQL Server エージェント サービスを「LocalSystem」として実行しているが、SQL Server および SQL Server エージェント アカウントをドメイン アカウントに変更することに抵抗がある場合は、これを試してください。

  1. SQL Server エージェント プロキシ アカウント/資格情報を使用してタスクの一部を実行し、SQL エージェントを使用してバックアップする場合は、UNC バックアップ先で、共有および NTFS 権限の下で、フル/変更権限を (それぞれ) 付与します。接続を確立するプロセス中の 1 つのポイント、または少なくとも私が試した SQL バックアップ ジョブ (少なくともセキュリティ ログによると)。残念ながら、純粋な SQL エージェント タスクで実行できるプロキシ アカウントを使用して、特定の SQL Server サービス タスクを実行する方法がないか、または方法を見つけられませんでした (User55852 と ZaDDaZ による以前の投稿で述べたように)。

  2. 共有および NTFS アクセス許可の下にある UNC バックアップ先サーバーで、SQL サーバー (ソース サーバー)のコンピューターアカウントに完全/変更アクセス許可を (それぞれ) 付与します。


これは、SQL サービスが「LocalSystem」として実行されているが、バックアップを削除するために別のサーバーに到達する必要がある場合に機能します。

そしてもちろん、ベスト プラクティスでは、SQL サービスごとに、最小限の特権を持つ独自のドメイン アカウントを用意する必要があると述べています。サーバーのコンピューター アカウントを追加する代わりに、許可されているよりもはるかに多くのアクセスを共有に公開します。コンピューター アカウントまたは「LocalSystem」として。

于 2011-02-24T01:01:02.040 に答える
2

メンテナンス プランの履歴にこのエラーが表示されました。

オペレーティング システム エラー 3 (指定されたパスが見つかりません)。BACKUP DATABASE が異常終了しています。". 考えられる失敗の理由: クエリの問題、「ResultSet」プロパティが正しく設定されていない、パラメーターが正しく設定されていない、または接続が正しく確立されていない。

共有にディレクトリを作成するバックアップ手順の最初の部分を実行しようとしました。アクセス拒否エラーが発生しました。

最後に、SQL エージェントが実行され、メンテナンス プランが正常に実行されているサービス アカウントに完全なアクセス許可を付与しました。

于 2011-09-14T03:29:14.110 に答える
1

SqlAgent が実行されているアカウントを確認します。通常は system\NetworkService であり、他のコンピューターへのアクセス権はありません。

UNC パス上の全員に一時的に書き込み権限を与えるか、コントロール パネル/サービスで SqlAgent に使用するアカウントを変更します。

于 2008-10-19T08:32:26.600 に答える
0

私はUNCのmmany回にバックアップしました。SQLサーバーとSQLエージェントが実行されているアカウントでのアクセス許可の問題ではないことを確認してください。私はそのような隠された管理共有にバックアップしません。おそらくそれが問題を引き起こしているのは$です。共有を作成し、それにバックアップします。\ server \ share NOT \ server \ c $ \ folder

于 2008-10-20T02:52:06.337 に答える
0

サーバー名の前に二重バックスラッシュがないのではありませんか?

于 2008-10-19T07:17:35.270 に答える