วิธีการย้ายโฟลเดอร์ของอินสแตนซ์ของ SQL Server LocalDB จากตำแหน่งเริ่มต้น


13

ฉันได้รับข้อผิดพลาดหลายที่มีLocalDB( ข้อผิดพลาดในการเริ่มต้น , ไม่สามารถสร้างฐานข้อมูลจาก SQL Server Studio จัดการและหลาย ปัญหาเมื่อพยายามที่จะเรียกคืนการสำรอง) และไม่มีการแก้ไขผมพบว่าจะช่วยอะไร สำหรับฉันดูเหมือนว่าข้อผิดพลาดทั้งหมดมีรากในการอนุญาตไม่ได้ตั้งค่าอย่างถูกต้อง

ตอนนี้สคริปต์การสร้างตาราง DDL ง่าย ๆ ทำงานได้ดีจาก SQL Server Management Studio และสร้างฐานข้อมูลในรูทของโฟลเดอร์บัญชีผู้ใช้ของฉัน ( ดังอธิบายไว้ที่นี่ ) อย่างไรก็ตามโฟลเดอร์อินสแตนซ์ (อยู่ที่D:\Users\[My name]\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instancesแม้เมื่อติดตั้งSQL Server Express ด้วยบริการขั้นสูงฉันระบุโฟลเดอร์ DATA ในตำแหน่งอื่น - ที่.mdfเก็บไฟล์SQL Server Express มาตรฐานเท่านั้นแต่ไม่ใช่LocalDBอินสแตนซ์) ดูเหมือนว่ามีปัญหาเกี่ยวกับการอนุญาต (ตรงกันข้ามกับบัญชี รูท) และเพื่อให้มีไฟล์ฐานข้อมูลอยู่ในตำแหน่งหนึ่งในโครงการของฉันฉันต้องการย้ายโฟลเดอร์อินสแตนซ์ไปที่อื่น เป็นไปได้ไหม ฉันไม่พบแม้แต่รายการรีจิสทรีที่เกี่ยวข้อง

ฉันใช้ SQL Server Express 2012 และ SSMS รุ่นเดียวกัน (ติดตั้งการปรับปรุงล่าสุด)

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

แก้ไข: หน้าการตั้งค่าฐานข้อมูล KookieMonster พูดถึงก่อนหน้านี้ได้โยนข้อผิดพลาดให้ฉันไม่สามารถแก้ไขหรือดูการกำหนดค่าใด ๆ ที่นั่น ฉันปล่อยให้ Windows Update ตรวจสอบการอัปเดตอีกครั้งและมีการอัปเดตบางอย่างสำหรับ SQL Server Express ที่ไม่ได้ติดตั้ง (แม้ว่าฉันแน่ใจว่าฉันเลือกทุกอย่างที่จะติดตั้งมาก่อน) ดังนั้นฉันจึงติดตั้ง ทำให้ฉันไปที่หน้าการตั้งค่าได้

ฉันพยายามตั้งค่าโฟลเดอร์รูทของอินสแตนซ์ของ LocalDB ไปที่อื่น แต่ฉันได้รับข้อผิดพลาดในการเข้าถึงถูกปฏิเสธสำหรับทุกโฟลเดอร์ที่ฉันลองใช้นั่นคือ

การเปลี่ยนแปลงล้มเหลวสำหรับการตั้งค่า 'Microsoft.SqlServer.Management.Smo.ObjectKeyBase' (Microsoft.SqlServer.Smo)

------------------------------ ข้อมูลเพิ่มเติม:

เกิดข้อยกเว้นขณะดำเนินการคำสั่งหรือชุดงาน Transact-SQL (Microsoft.SqlServer.ConnectionInfo)


RegCreateKeyEx () ส่งคืนข้อผิดพลาด 5 'การเข้าถึงถูกปฏิเสธ' (Microsoft SQL Server ข้อผิดพลาด: 22002)

ฉันได้รับสิ่งนี้แม้ว่าโฟลเดอร์จะมีการควบคุมทั้งหมดสำหรับทุกคน ยิ่งน่าขบขันเพียงโฟลเดอร์เดียวที่ใช้งานได้โฟลเดอร์ที่ตั้งเป็นค่าเริ่มต้น (รูทของบัญชีผู้ใช้) ไม่มีการอนุญาตพิเศษใด ๆ - เฉพาะโฟลเดอร์ที่ผู้ใช้ของฉันมี (เช่นเดียวกับโฟลเดอร์อื่นที่ฉันพยายามตั้งค่า) ซึ่งหมายความว่าไฟล์ฐานข้อมูล LocalDB ทั้งหมดของฉันจะถูกบันทึกลงในโฟลเดอร์รูทของบัญชีของฉัน


1
จะเกิดอะไรขึ้นเมื่อคุณสร้างฐานข้อมูลและตั้งค่าไฟล์ไปยังตำแหน่งเฉพาะแทนการใช้ค่าเริ่มต้นอย่างชัดเจน
Aaron Bertrand

1
ขอบคุณสำหรับการตอบกลับของคุณ! ใช้งานได้ (ถ้าฉันเลือกโฟลเดอร์ที่เหมาะสมเช่นโฟลเดอร์โครงการของฉัน) แต่ไม่สะดวกมากที่จะต้องระบุเส้นทางทุกครั้ง ฉันไม่อยากจะเชื่อเลยว่าจะไม่มีทางเปลี่ยนค่าเริ่มต้น
Piedone

เกิดอะไรขึ้นเมื่อคุณไปที่โหนดเซิร์ฟเวอร์คลิกขวาคุณสมบัติพารามิเตอร์ฐานข้อมูลและเปลี่ยนตำแหน่งเริ่มต้น ค่าที่คุณตั้งไว้ระหว่างการติดตั้งเป็นอย่างอื่นหรือไม่?
KookieMonster

ฉันมีปัญหาเดียวกันที่แน่นอน ฉันคิดว่าเหตุผลในการเปลี่ยนการอนุญาตของโฟลเดอร์ไม่มีผลเพราะนี่เป็นการบอกคุณว่ามีปัญหาเรื่องการอนุญาตกับรีจิสทรีโดยเฉพาะการสร้างคีย์รีจิสทรี (ดูในส่วนสุดท้าย: RegCreateKeyEx) น่าเสียดายที่ฉันไม่สามารถทราบได้ว่าต้องการสร้างอะไร
daveaglick

คำตอบ:


13

ดูความคิดเห็นของฉันด้านบน ฉันใช้การตรวจสอบกระบวนการเพื่อติดตามการเข้าถึงรีจิสทรีและพบว่าการเข้าถึงถูกปฏิเสธขณะพยายามเขียน:

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

ผมได้รอบนี้โดยการเปิดโปรแกรม Registry Editor HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServerและให้ทุกคนสามารถเข้าถึง จากนั้นฉันเปลี่ยนตำแหน่งเริ่มต้นและลบการเข้าถึงทุกคนเมื่อดำเนินการเสร็จแล้ว นี่ทำให้คีย์พิเศษต่อไปนี้ไม่เคยมีมาก่อน:

DefaultData

DefaultLog

BackupDirectory


ขอบคุณ. ในที่สุดฉันก็ไปเส้นทางอื่นดังนั้นจึงไม่สามารถทดสอบว่าสิ่งนี้จะได้ผลกับฉันอย่างไร
Piedone

3
ฉันเพิ่งลองวิธีแก้ปัญหาที่คุณเสนอที่นี่และใช่ฉันมีสิ่งพิเศษที่คุณพูดถึงในรีจิสทรี ยังคงนี้ไม่ได้แทนที่หรือเปลี่ยนค่าคุณสมบัติปัจจุบันของฐานข้อมูลท้องถิ่นของฉัน รีจิสทรีแสดงค่าที่ต้องการสำหรับทั้ง 3 ตำแหน่ง แต่ใน SMSS ยังคงมีตำแหน่งเริ่มต้นโดยการติดตั้ง การใช้ MS sql server compact 3.5 SP 1 อาจเป็นสาเหตุของพฤติกรรมเช่นนี้หรือไม่?
user3840527

2
นี้เป็นสถานที่เดียวที่ฉันได้รับสามารถที่จะหาใด ๆข้อมูลเกี่ยวกับข้อผิดพลาดนี้ แม้ว่าใช่การแก้ไขการอนุญาตสำหรับคีย์ reg นั้นจะทำให้ข้อผิดพลาดหายไป แต่ตามที่ผู้ใช้ 3840527 บอกว่า SSMS ยังคงมีตำแหน่งเริ่มต้นดั้งเดิมหลังจากนั้นแม้ว่าจะออกจาก & เปิดใหม่อีกครั้ง
Yann Duran

@Piedone คุณช่วยอธิบายได้ว่าอะไรที่คุณทำแทนที่จะใช้วิธีการ reg key? หรือชี้ไปที่อื่นที่อธิบายวิธีการได้หรือไม่ ขอบคุณ
Yann Duran

1
ข้อผิดพลาดหายไป แต่สถานที่ไม่เปลี่ยนแปลง
Adil Mammadov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.