簡體   English   中英

SQL Server Management Studio-無法從bak和trn還原

[英]SQL Server Management Studio - trouble restoring from bak and trn

我正在嘗試從.baktrn文件還原數據庫。 我無法通過SQL Server Management Studio查看.bak.trn文件。 但是當我轉到文件夾時,我看到了它們。 我使用了T-sql,但是它說訪問被拒絕。 我是服務器上的系統管理員。 有人可以幫我嗎。 腳本:

從磁盤還原數據庫[XYZ] = N'R:\\ MSSQL10_50.MSSQLSERVER \\ MSSQL \\ Restore \\ XYZ_Full.bak'WITH FILE = 1

錯誤:消息3201,級別16,狀態2,第3行無法打開備份設備'R:...”操作系統錯誤5(訪問被拒絕。)。

確保您在SSMS中的帳戶(Windows或sql服務器)有權備份/還原,sysadmin,db_backoperator等。

備份和還原過程在SQL Server(引擎)服務帳戶下運行,因為您可能正在便攜式計算機上運行SSMS,但正在使用服務器上的文件。

無論以誰身份登錄,都是需要訪問目錄和文件的服務帳戶。

服務帳戶是域帳戶還是本地服務? 我使用域帳戶,以便可以處理UNC路徑上的文件。

另外,在瀏覽對話框期間將執行兩個系統存儲過程: master.dbo.xp_dirtree,master.dbo.xp_fileexist

如果它們從查詢窗口返回空結果,則說明SQL Server服務帳戶存在權限問題。

Profiler跟蹤瀏覽操作(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM