Tệp .bak không hiển thị trong bất kỳ thư mục nào trong SSMS


46

Tôi có một tệp .bak được tạo bởi người khác ngày hôm nay, được tạo thủ công thông qua SSMS 2008 R2. Tôi đang cố gắng khôi phục cơ sở dữ liệu theo cách thủ công, tiếc là tệp không xuất hiện khi tôi duyệt nó.

Tôi có thể viết kịch bản quá trình khôi phục, nhưng tôi đã thấy vấn đề này trước đây và tôi không chắc điều gì có thể khiến .bak không xuất hiện.


Tôi sẽ viết một kịch bản để khôi phục, tôi chỉ muốn biết điều gì gây ra nó. Đó chắc chắn là một .bak, không phải .bak.txt hay bất cứ thứ gì.
Sean Long

Vì vậy, bạn có thể duyệt thư mục nơi bạn biết tệp và nó không xuất hiện? Hoặc bạn không thể duyệt đến thư mục?
Aaron Bertrand

Tôi có thể duyệt đến thư mục, chỉ cần không thấy bất kỳ tệp .bak nào. Tôi đã kiểm tra quyền của người dùng Tôi đang chạy SSMS, họ là quản trị viên cục bộ và tệp không được đánh dấu là "ẩn" hoặc bất cứ điều gì.
Sean Long

Bạn có thể đăng ảnh chụp màn hình ở đâu đó, hiển thị chế độ xem thư mục của Windows Explorer và SSMS không? Cũng giải thích trong câu hỏi quá trình bạn đang sử dụng để đi đến bước này.
Aaron Bertrand

1
(Cũng lưu ý các tài khoản dịch vụ SQL Server phải có quyền quá, không chỉ người sử dụng SSMS Dù rằng không nên ngăn chặn bak file hiển thị trong danh sách trước khi bạn làm bất cứ điều gì với họ..)
Aaron Bertrand

Câu trả lời:


39

Chúng tôi đã có cùng một vấn đề ngày hôm nay. Nó hóa ra là một vấn đề quyền, như được minh họa trong một số câu trả lời khác. Sự khác biệt là tài khoản chúng tôi cần thêm là NT SERVICE\MSSQLSERVER.

Ảnh chụp màn hình

Tôi đã xác định tài khoản bằng cách so sánh các quyền của quyền truy cập thư mục SQL Backup mặc định với thư mục chứa tệp sao lưu.

Thêm tài khoản dịch vụ không đơn giản như âm thanh. Đây là những gì làm việc cho tôi. (Máy chủ 2012 R2)

  1. Đăng nhập vào máy chủ. (Thay đổi phải được thực hiện trên máy chủ thực tế, không phải thông qua chia sẻ mạng.)
  2. Thay đổi vị trí thành tên máy chủ cục bộ.
  3. Nhập vào NT SERVICE\MSSQLSERVERhộp tên. (Không nhấp vào Kiểm tra tên)
  4. Nhấn OK. Sau đó, bạn sẽ thấy một danh sách các tài khoản dịch vụ phù hợp. Chọn MSSQLSERVER và nhấp OK để chấp nhận lựa chọn.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Bạn sẽ thấy tài khoản dịch vụ được liệt kê trong cài đặt bảo mật và có thể điều chỉnh các quyền tương ứng.

Sau khi thêm quyền (Tôi đã thêm Toàn quyền, để khớp với thư mục Sao lưu SQL mặc định.) Và khởi động lại Bảng điều khiển quản lý máy chủ SQL, tôi có thể chọn và khôi phục tệp sao lưu của mình.


superuser.com/questions/248315/ từ cho chúng tôi biết cách liệt kê tài khoản người dùng trên máy tính. Đối với bất kỳ dịch vụ nào được đặt tên s, có một tài khoản ảo được đặt tên NT Service\s, ngay cả khi dịch vụ không chạy dưới tài khoản đó.
Tahir Hassan

2
Tài khoản tôi phải thêm là NT Service\MSSQL$SQLSERVER2014, có lẽ vì tôi đã đặt tên cho trường hợp của mìnhSQLSERVER2014
thinkOfaNumber

16

Tôi đã nhận được điều này ngày hôm nay.

Tôi đã tắt chia sẻ tệp, lập chỉ mục và xóa bất kỳ phiên mở nào (mọi người đã đăng nhập để sao lưu bản sao lưu), nhưng vấn đề không biến mất.

Đã đi đến Windows Explorer, sao chép các bản sao lưu vào một thư mục khác và duyệt qua thư mục đó thông qua Management Studio và tôi có thể thấy nó ở đó.

Đã xóa thư mục gốc và tạo lại nó, sao chép lại nội dung và duyệt các .baktệp và nó trở lại bình thường.

Hy vọng điều này sẽ giúp được ai đó.


1
nó đã giúp :)
Peter PitLock

5

Tôi đã gặp vấn đề này một vài lần. Vấn đề không nằm ở SQL Server mà là sự cho phép của thư mục Windows. Bạn phải thêm quyền thích hợp vào thư mục nơi bạn đã sao chép tệp .bak (tôi nghĩ là System Networkvai trò).

Giải pháp dễ dàng hơn là, để di chuyển tệp vào thư mục sao lưu mặc định trong Tệp chương trình. Nó có tất cả sự cho phép cần thiết. Đối với SQL Server 2012, nó là

D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup

Đây là một giải pháp tuyệt vời vì người ta không mở các lỗ hổng bảo mật tiềm ẩn trong máy tính của họ chỉ để khôi phục một tệp.
Michael Potter

hoạt động tuyệt vời không cần chính sách và công cụ
Marin

3

Tôi cũng đã gặp vấn đề tương tự ngày hôm nay. Tôi đã được cung cấp một tập tin sao lưu để khôi phục nhưng nó không hiển thị cho tôi trong khi duyệt. Tuy nhiên, tôi đã có thể truy cập hệ thống tệp nhưng trong trình hướng dẫn khôi phục bằng cách sử dụng SQL Server management Studio.

Sau khi chi tiêu một số tôi phát hiện ra rằng đó là vấn đề quyền. Dịch vụ máy chủ SQL đang chạy bằng cách sử dụng Network Servicenhưng Network Servicetài khoản không có quyền truy cập vào thư mục. Sau khi cấp quyền cho Network Service. Sao lưu tập tin đã được nhìn thấy để khôi phục.

Để biết chi tiết xin vui lòng kiểm tra bởi Blog .


2

Nếu bạn có thể tìm thấy nó trong Windows Explorer, thì bạn nên viết một RESTORE DATABASElệnh thay vì dựa vào GUI cồng kềnh để tìm nó cho bạn. Ai biết được mã nào đang diễn ra trong đó và tại sao nó không thể tìm thấy tệp - xin lỗi tôi chỉ có cách giải quyết và không phải là giải pháp.

Ngoài ra, hãy đảm bảo rằng tệp thực sự là một cái gì đó.bak chứ không phải là một cái gì đó


1

Điều này đã xảy ra với tôi ngày hôm nay trên hộp dev của tôi. Trong trường hợp của tôi, tài khoản dịch vụ có quyền đối với thư mục, nhưng tài khoản người dùng của tôi thì không. Khi tôi cấp quyền tài khoản của mình cho thư mục, tôi có thể xem các tệp .BAK.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.