1

データベースのバックアップと復元を可能にする C# アプリケーションを作成しました。これは、最初に次を使用して SQL サーバー上のローカル ファイルにデータベースをバックアップすることによって行われます。

Backup backup = new Backup();
backup.Devices.AddDevice(Path.GetFullPath(backupFilePath), DeviceType.File);
...
backup.SqlBackup(server);

次に、次を使用してバックアップ ファイルから復元することにより、新しいデータベースを作成します。

Restore restore = new Restore();
restore.Devices.AddDevice(Path.GetFullPath(backupFileToRestoreFrom), DeviceType.File);
...
restore.SqlRestore(server);

新しいデータベースが作成された後、作成した一時バックアップ ファイルを削除したいと考えています。私は Sql サーバー ボックスの管理者権限を持っているので、次のコマンドを使用してリモート サーバー上のファイルを削除できます。

File.Delete("\\SqlServer\C$\Backups\BackupFileToDelete.bak")

そしてそれは動作します。ただし、Sql サーバー ボックスに対する権限を持たない他のユーザーがアプリを実行すると、権限がないという例外がスローされます。

リモート Sql サーバーで作成されたバックアップ ファイルを削除するために呼び出すことができる Sql SMO 関数はありますか?

4

2 に答える 2

0

もう 1 つの可能性は、xp_cmdshell を使用するよりも安全な SQLCLR を使用することです。ストアド プロシージャとして記述された機能を備えた CodePlex プロジェクト コール SQLCLR ファイル関数さえあります。DBA にこの道を進むよう説得できるかどうか見てみようと思います。欠点は、これによって作成される sprocs を、作成されるすべての既存および新規の SQL Server にインストールする必要があると私が信じていることです。推測ですが、すべてのサーバーで xp_cmdshell を有効にする必要があるのと大差ありません。

于 2013-11-27T20:33:20.663 に答える