Làm cách nào để di chuyển thư mục của các phiên bản SQL Server LocalDB từ vị trí mặc định?


12

Tôi gặp nhiều lỗi với LocalDB( lỗi khởi động , không thể tạo DB từ SQL Server Management Studio và cũng có nhiều vấn đề khi cố gắng khôi phục bản sao lưu) và không có cách khắc phục nào tôi tìm thấy giúp được gì cả. Dường như với tôi rằng tất cả các lỗi có quyền gốc của chúng trong các quyền không được thiết lập chính xác.

Bây giờ, một kịch bản tạo bảng DDL đơn giản hoạt động tốt từ SQL Server Management Studio và tạo cơ sở dữ liệu trong thư mục gốc của tài khoản người dùng của tôi ( như được giải thích ở đây ). Tuy nhiên, thư mục Instances (được đặt tại D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instancesmặc dù khi cài đặt SQL Server Express với Dịch vụ nâng cao Tôi đã chỉ định thư mục DATA ở một vị trí khác - nơi chỉ .mdflưu trữ các tệp SQL Server Express tiêu chuẩn , nhưng không phải là LocalDBtrường hợp) có vẻ có vấn đề về quyền (trái với tài khoản root) do đó và cũng để có các tệp DB của tôi ở một vị trí trong số các dự án của tôi, tôi muốn chuyển thư mục Instances sang một nơi khác. Điều này có thể không? Tôi thậm chí không tìm thấy một mục đăng ký tương ứng.

Tôi đang sử dụng SQL Server Express 2012 và SSMS cùng phiên bản (bản cập nhật mới nhất được cài đặt).

Bất kỳ trợ giúp sẽ được đánh giá cao.

Chỉnh sửa: Trang Cài đặt cơ sở dữ liệu KookieMonster đã đề cập trước đây đã gây ra lỗi cho tôi, không thể chỉnh sửa cũng như không thấy bất kỳ cấu hình nào ở đó. Tôi để Windows Update kiểm tra các bản cập nhật một lần nữa và có một số bản cập nhật cho SQL Server Express chưa được cài đặt (mặc dù tôi chắc chắn rằng tôi đã chọn mọi thứ để cài đặt trước đó), vì vậy tôi đã cài đặt chúng. Điều này giúp tôi có thể đi đến trang cài đặt.

Tôi đã cố gắng thiết lập thư mục gốc của đối tượng LocalDB sang một nơi khác nhưng tôi gặp lỗi từ chối truy cập cho mọi thư mục tôi đã thử, cụ thể là

Thay đổi không thành công cho Cài đặt 'Microsoft.SqlServer.Man Quản lý.Smo.ObjectKeyBase'. (Microsoft.SqlServer.Smo)

------------------------------ THÔNG TIN THÊM:

Một ngoại lệ đã xảy ra trong khi thực hiện một câu lệnh hoặc lô Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx () trả về lỗi 5, 'Truy cập bị từ chối.' (Máy chủ Microsoft SQL, Lỗi: 22002)

Tôi nhận được điều này ngay cả khi thư mục có toàn bộ quyền kiểm soát cho Mọi người! Thậm chí thú vị hơn là thư mục duy nhất hoạt động, một thư mục được đặt làm mặc định (gốc của tài khoản người dùng) không có quyền đặc biệt nào được áp dụng - chỉ những thư mục mà người dùng của tôi có (giống như bất kỳ thư mục nào khác tôi đã cố gắng đặt). Thực tế, điều này có nghĩa là tất cả các tệp của cơ sở dữ liệu LocalDB của tôi được lưu vào thư mục gốc của tài khoản của tôi.


1
Điều gì xảy ra khi bạn tạo cơ sở dữ liệu và đặt rõ ràng các tệp đến một vị trí cụ thể thay vì lấy mặc định?
Aaron Bertrand

1
Cảm ơn vì đã trả lời! Điều đó hoạt động (nếu tôi chọn một thư mục phù hợp như thư mục dự án của tôi) nhưng sẽ rất bất tiện khi phải chỉ định đường dẫn mỗi lần. Tôi chỉ không thể tin rằng không có cách nào để thay đổi mặc định.
Pi

Điều gì xảy ra khi bạn đi đến nút máy chủ, nhấp chuột phải, thuộc tính, tham số cơ sở dữ liệu và chuyển đổi vị trí mặc định? Là các giá trị bạn đặt trong quá trình cài đặt hay cái gì khác?
KookieMonster

Tôi đã có cùng một vấn đề chính xác. Tôi nghĩ lý do thay đổi quyền thư mục không có tác dụng là vì điều này thực sự cho bạn biết có vấn đề về quyền với cơ quan đăng ký, cụ thể là tạo khóa đăng ký (xem phần cuối: RegCreateKeyEx). Thật không may, tôi không thể tìm ra khóa nào nó muốn tạo.
daveaglick

Câu trả lời:


13

Xem bình luận của tôi ở trên. Tôi đã sử dụng Trình giám sát quy trình để theo dõi quyền truy cập sổ đăng ký và nhận thấy nó đang bị từ chối truy cập trong khi cố gắng viết:

3:16:40.8405491 PM sqlservr.exe 8756 RegCreateKey HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer ACCESS DENIED Desired Access: Write

Tôi đã khắc phục điều này bằng cách mở Registry Editor và cung cấp cho mọi người quyền truy cập đầy đủ HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer. Sau đó, tôi đã thay đổi vị trí mặc định và xóa quyền truy cập Mọi người sau khi hoàn thành. Điều này tạo ra các khóa bổ sung sau chưa có trước đây:

Mặc địnhData

Nhật ký mặc định

Sao lưu dự phòng


Cảm ơn bạn. Cuối cùng tôi đã đi một con đường khác, vì vậy không thể kiểm tra xem nó sẽ hoạt động như thế nào với tôi.
Ngày

3
Tôi vừa thử chính xác giải pháp bạn đề xuất ở đây và vâng tôi đã có các tính năng bổ sung mà bạn đề cập trong sổ đăng ký. Tuy nhiên, điều này không ghi đè hoặc thay đổi các giá trị thuộc tính hiện tại của cơ sở dữ liệu cục bộ của tôi. Sổ đăng ký hiển thị các giá trị mong muốn cho cả 3 vị trí, nhưng trong SMSS vẫn có các vị trí mặc định bằng cách cài đặt. Sử dụng máy chủ MS sql compact 3.5 SP 1 có thể là lý do cho hành vi như vậy?
dùng3840527

2
Đây là nơi duy nhất tôi có thể tìm thấy bất kỳ thông tin nào về lỗi này. somedave, vâng, việc thay đổi quyền cho khóa reg đó sẽ khiến lỗi không còn nữa, nhưng như user3840527 nói, SSMS vẫn có các vị trí mặc định ban đầu sau đó, ngay cả sau khi thoát và mở lại.
Yann Duran

@Piedone, bạn có thể vui lòng giải thích những gì bạn đã làm thay vì sử dụng phương thức khóa reg không? Hoặc chỉ đến một nơi nào đó giải thích phương pháp? Cảm ơn
Yann Duran

1
Lỗi biến mất nhưng vị trí không thay đổi
Adil Mammadov
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.