データベースをディレクトリにバックアップする SQL Server に関する問題をデバッグしています。
私が実行しているアプリケーションは、app.manifest
ファイルに設定されている管理者権限で起動します。
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
アプリケーションは、初期ディレクトリをデフォルトの SQL Server バックアップ ディレクトリに設定します。
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup
ユーザーはバックアップ ディレクトリを変更することが許可されており、それを入力できるため、次のように入力します。
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup 12
次に、プログラムはストアド プロシージャを使用してディレクトリにバックアップするように SQL に指示します。
BACKUP DATABASE @DatabaseName TO DISK = @FilePath WITH NAME = @BackupName
どこ:
@FilePath
ユーザーが選択したディレクトリです@BackupName
はYYYYMMDDHHMMSS.bak
呼び出しは次のように失敗します。
オペレーティング システム エラー 5 (アクセスが拒否されました)。
そこで、デフォルトの SQL Server バックアップ ディレクトリのコマンド ラインで icacls を使用して、ディレクトリの権限を調査しました。
icacls .\backup
CREATOR OWNER:(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(OI)(CI)(F)
BUILTIN\Administrators:(OI)(CI)(F)
MIKE-2K8-1\SQLServerMSSQLUser$mike-2k8-1$MSSQLSERVER:(OI)(CI)(F)
次に、ユーザーが作成するディレクトリに対して、次のようにします。
icacls .\backup 12
BUILTIN\Administrators:(I)(F)
CREATOR OWNER:(I)(OI)(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(IO)(F)
BUILTIN\Users:(I)(OI)(CI)(RX)
MIKE-2K8-1\SQLServerMSSQLUser$mike-2k8-1$MSSQLSERVER:(I)(OI)(CI)(RX)
SQLServerMSSQLUser
ディレクトリによってアクセス許可が異なることがわかります...どうすればアクセス許可を変更できますか?