确保您在 SSMS 中的帐户(windows 或 sql server)具有备份/恢复、sysadmin、db_backoperator 等权限。
备份和恢复过程在 SQL Server(引擎)服务帐户下运行,因为您可能在笔记本电脑上运行 SSMS,但使用服务器上的文件。
您以谁的身份登录并不重要,它是需要访问目录和文件的服务帐户。
服务帐户是域帐户还是本地服务?我使用域帐户,以便可以处理 UNC 路径上的文件。
此外,在浏览对话框中执行了两个系统存储过程:master.dbo.xp_dirtree、master.dbo.xp_fileexist。
如果他们从查询窗口返回空结果,这是 SQL Server 服务帐户的权限问题。
Profiler Trace Browse 操作(Adventure Works)。
declare @Path nvarchar(255)
declare @Name nvarchar(255)
select @Path = N'C:\mssql\save me\backup\AdventureWorks2012'
select @Name = N'AdventureWorks2012_backup_2012_11_30_160723_2147507.bak'
create table #filetmpfin (Name nvarchar(255) NOT NULL, IsFile bit NULL)
if(@Name is null)
begin
create table #filetmp (Name nvarchar(255) NOT NULL, depth int NOT NULL, IsFile bit NULL )
insert #filetmp EXECUTE master.dbo.xp_dirtree @Path, 1, 1
insert #filetmpfin select Name, IsFile from #filetmp f
drop table #filetmp
end
if(NOT @Name is null)
begin
declare @FullName nvarchar(300)
if(@Path is null)
select @FullName = @Name
else
select @FullName = @Path + '\' + @Name
create table #filetmp2 ( Exist bit NOT NULL, IsDir bit NOT NULL, DirExist bit NULL )
insert #filetmp2 EXECUTE master.dbo.xp_fileexist @FullName
insert #filetmpfin select @Name, 1-IsDir from #filetmp2 where Exist = 1 or IsDir = 1
drop table #filetmp2
end
SELECT
Name AS [Name],
IsFile AS [IsFile]
FROM
#filetmpfin
ORDER BY
[IsFile] ASC,[Name] ASC
drop table #filetmpfin