SQL Server Management Studio - проблемы с восстановлением из bak и trn

Я пытаюсь восстановить базу данных из файлов .bak и trn. Я не могу просматривать файлы .bak и .trn через SQL Server Management Studio. Но когда я захожу в папку, я их вижу. Я использовал T-sql, но он говорит, что доступ запрещен. Я сисадмин на сервере. Может ли кто-нибудь помочь мне с этим. Сценарий:

ВОССТАНОВЛЕНИЕ БАЗЫ ДАННЫХ [XYZ] С ДИСКА = N'R: \ MSSQL10_50.MSSQLSERVER \ MSSQL \ Restore \ XYZ_Full.bak 'С ФАЙЛОМ = 1

GO

Ошибка: Msg 3201, уровень 16, состояние 2, строка 3 Не удается открыть устройство резервного копирования «R: ...» Ошибка операционной системы 5 (доступ запрещен).


person knahs    schedule 03.09.2013    source источник
comment
Вы получаете ошибку доступа к файлам на уровне ОС?   -  person sam yi    schedule 03.09.2013
comment
да. Через графический интерфейс я не вижу файлы, поэтому я использовал скрипт Tsql для восстановления, к которому он говорит, что доступ запрещен.   -  person knahs    schedule 03.09.2013
comment
Покажите, пожалуйста, скрипт, который вы используете, и фактическое сообщение об ошибке.   -  person Aaron Bertrand    schedule 03.09.2013


Ответы (1)


Убедитесь, что ваша учетная запись (windows или sql server) в SSMS имеет право на резервное копирование / восстановление, sysadmin, db_backoperator и т. Д.

Процессы резервного копирования и восстановления выполняются под учетной записью службы SQL Server (Engine), поскольку вы можете запускать SSMS на своем портативном компьютере, но работать с файлами на сервере.

Неважно, под кем вы вошли, это учетная запись службы, которая нуждается в доступе к каталогу и файлам.

Учетная запись службы - это учетная запись домена или локальная служба? Я использую учетную запись домена, чтобы работать с файлами по пути UNC.

Кроме того, есть две системные хранимые процедуры, которые выполняются во время диалога просмотра: master.dbo.xp_dirtree, master.dbo.xp_fileexist.

Если они возвращают пустые результаты из окна запроса, это проблема с разрешением для учетной записи службы SQL Server.

Операция обзора трассировки профилировщика (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
person CRAFTY DBA    schedule 03.09.2013
comment
Спасибо за уделенное время. Агент SQL не имел доступа к этой папке, из-за которой возникла проблема. - person knahs; 04.09.2013