我在 Docker 中创建了一个 SQL Server,并且可以从 SQL Server Management Studio 成功连接到它。我将备份文件mybackup.bak
从我的服务器复制到 Docker SQL 容器路径/var/opt/mssql/backup/
。
我可以在 SQL Server Management Studio 中看到此文件,但是当我尝试恢复它时,出现“访问被拒绝”错误。
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
计划地点:
在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteWithResults(字符串 sqlCommand,布尔重试)
在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteWithResults(字符串查询,布尔重试)
在 Microsoft.SqlServer.Management.Smo.BackupRestoreBase.ExecuteSqlWithResults (服务器服务器,字符串cmd)
在Microsoft.SqlServer.Management.Smo.Restore.ReadBackupHeader(服务器srv)
在Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreUtil.GetSourceDbNames(ICollection`1 bkdevList,字符串凭据,IBackgroundOperationContext backgroundContext)
在Microsoft。 SqlServer.Management.RelationalEngineTasks.RestoreDatabaseDialogController.<>c__DisplayClass8.b__7(IBackgroundOperationContext backgroundContext)无法打开备份设备“/var/opt/mssql/backup/Keycloak.bak”。操作系统错误 5(访问被拒绝。)。
RESTORE HEADERONLY 异常终止。(.Net SqlClient 数据提供程序)如需帮助,请单击: https: //learn.microsoft.com/sql/relational-databases/errors-events/mssqlserver-3201-database-engine-error
服务器名称:155.155.155.155,1433
错误号:3201
严重性:16
状态:2
行号:1
您能告诉我如何授予此访问权限吗?这将是很大的帮助。我看到这个堆栈问题,但我不知道这个人如何没有找到访问被拒绝的问题。
在 Linux 上,SQL Server 服务帐户在名为 的用户下运行mssql
。默认情况下,目录/var/opt/mssql
及其内容也由用户和组拥有mssql
。
backup
不是此目录中的默认文件夹,因此可能是您自己创建的。但是,如果您创建了该目录,则默认情况下它不会被拥有mssql
,并且可能由您的用户和组拥有users
。
因此,您需要更改该目录的所有者。我还假设您是这里组的成员mssql
,因此希望用户和组所有者相同
sudo chown mssql: /var/opt/mssql/backup -R
sudo chmod 775 /var/opt/mssql/backup -R
Run Code Online (Sandbox Code Playgroud)
您可能还希望确保在该文件夹中创建的任何文件都继承组所有者,这样,如果您复制进一步的备份,它们就归该组所有mssql
。您可以执行以下操作:
sudo chmod +s /var/opt/mssql/backup
Run Code Online (Sandbox Code Playgroud)
然后再试RESTORE
一次。
如果您不是该mssql
组的成员,一旦更改目录的所有者,您将失去对该目录的访问权限。因此,您可以使用以下命令将自己添加到该组中:
sudo usermod -aG mssql {your user}
Run Code Online (Sandbox Code Playgroud)
显然,您需要替换{your user}
为您的用户。但是,组不会立即应用,您需要重新连接到主机或模拟自己。
或者,您可以将 的用户所有者更改backup
为您自己,并使该组mssql
也是所有者;(虽然我个人认为将mssql
组添加到您的用户是更好的选择):
sudo chown {youruser}:mssql /var/opt/mssql/backup -R
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2629 次 |
最近记录: |