สร้างไฟล์พบข้อผิดพลาดของระบบปฏิบัติการ 5 (ปฏิเสธการเข้าถึง)


13

ฉันพยายามรันสคริปต์ต่อไปนี้ใน SQL Server Management Studio:

USE [master]
GO

CREATE DATABASE [test1] ON PRIMARY (
  NAME = N'test1', 
  FILENAME =
    N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1.mdf',
  SIZE = 70656KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB)
LOG ON (
  NAME = N'test1_log',
  FILENAME =
    N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\test1_log.ldf',
  SIZE = 164672KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

แต่ฉันได้รับข้อผิดพลาด:

ข่าวสารเกี่ยวกับ 5123 ระดับ 16 สถานะ 1 บรรทัด 2
CREATE FILE พบข้อผิดพลาดของระบบปฏิบัติการ 5 (ปฏิเสธการเข้าถึง)
ในขณะที่พยายามเปิดหรือสร้างไฟล์ฟิสิคัล
'C: \ Program SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ Data \ test1.mdf'

ข่าวสารเกี่ยวกับ 1802, ระดับ 16, สถานะ 4,
ฐานข้อมูล CREATE DATABASE 2 ไม่สามารถสร้างชื่อไฟล์บางรายการ ตรวจสอบข้อผิดพลาดที่เกี่ยวข้อง

มีสิทธิ์อนุญาตบทบาททั้งหมดสำหรับผู้ใช้ของฉันแล้วมีข้อคิดเห็นใด ๆ ว่ามีอะไรผิดปกติ


1
"ผู้ใช้ของคุณ" หรือผู้ใช้บริการของคุณกำลังทำงานเป็น? กระบวนการเซิร์ฟเวอร์จะพยายามสร้างไฟล์นั้นไม่ใช่ผู้ใช้ของคุณ

1
คุณสามารถตรวจสอบว่าไฟล์มีอยู่แล้ว? (อาจเกิดจากความพยายามครั้งก่อน) หากมีอยู่และเปิดโดย SqlServer คุณจะได้รับข้อผิดพลาดถูกปฏิเสธการเข้าถึง

1
บริการ -> เซิร์ฟเวอร์ sql-> ดับเบิลคลิก -> หน้าแท็บที่สอง (การเชื่อมต่อหรือไม่)

1
@thiagocfb Start-> Run-> services.msc เลื่อนดูรายการบริการจนกว่าคุณจะพบ SQL Server คลิกขวา -> คุณสมบัติ -> แท็บเข้าสู่ระบบ
swasheck

1
คุณเคยลองใช้งานธรรมดาCREATE DATABASE [test1]; GOไหม?
swasheck

คำตอบ:


19

คุณได้รับข้อผิดพลาดการอนุญาต บัญชีที่ใช้ SQL Server ไม่มีสิทธิ์ที่จำเป็นในโฟลเดอร์ซึ่งจะมีไฟล์ฐานข้อมูล

คุณต้องให้บัญชีที่ใช้ SQL Server (ไม่ใช่บัญชีของคุณ) การควบคุมแบบเต็มของ C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA


ใช่ปัญหาคือผู้ใช้ที่ใช้บริการ! :) ขอบคุณ!
thiagocfb

โดยทั่วไปบริการ Windows Server ของ Windows จะทำงานภายใต้Network Serviceบัญชี ดังนั้นสิทธิ์ที่เหมาะสมจะต้องแก้ไขในไดเรกทอรีที่เกี่ยวข้องสำหรับบัญชีนี้หากเป็นเช่นนั้นในพีซีของคุณเช่นกัน
RBT

3
อย่างน้อยเมื่อรัน SSMS gui ในฐานะผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบสำหรับการดำเนินการแนบเริ่มต้นผู้ใช้ที่ใช้ SSMS จะต้องมีสิทธิ์ในโฟลเดอร์นั้น การใช้ SSMS ในฐานะผู้ดูแลระบบในระหว่างที่ ATITCH ATITCH แก้ไขปัญหานี้และจากนั้นคุณสามารถเรียกใช้ในฐานะผู้ดูแลระบบในภายหลังโดยไม่มีปัญหา
tbone

6

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

ในCREATE DATABASEคำสั่งของคุณคุณกำลังระบุตำแหน่ง แต่เป็นตำแหน่งนั้นที่ระบุไว้ในการตั้งค่าเดิมหรือไม่ บัญชีบริการเปลี่ยนไปหรือไม่

วิธีทดสอบสิ่งนี้คือเรียกใช้ยาสามัญ

CREATE DATABASE [test1]; 
GO

หากคุณได้รับข้อผิดพลาดเดียวกันอาจจะมีการเปลี่ยนแปลงบัญชีบริการหรือบางอย่างเกี่ยวกับสิทธิ์ NTFS มีการเปลี่ยนแปลง

เส้นทางการแก้ปัญหา (ตามสตริงความคิดเห็น) คือการยืนยันว่าบริการที่ใช้ SQL Server มีสิทธิ์ R / W บนเส้นทางที่คุณระบุ เพื่อทำสิ่งนี้:

Start-> Run-> services.msc-> เลื่อนดูรายการบริการจนกว่าคุณจะพบ SQL Server-> คลิกขวา -> properties-> แท็บ Log On

ตอนนี้ไปและตรวจสอบให้แน่ใจว่าบัญชีมีสิทธิ์ที่เหมาะสมในไดเรกทอรีนั้นเพื่อทำสิ่งที่จำเป็นต้องทำ


2

ดูเหมือนว่ามีจำนวนช่องว่างไม่ถูกต้องในพา ธ ที่ให้มาดังนั้นจึงไม่ตรงกับแผนผังโฟลเดอร์
เซิร์ฟเวอร์ Sql จะไม่สร้างเส้นทางที่ไม่มีอยู่

แก้ไข :
โพสต์ต้นฉบับของคุณพูดว่า:

...\Microsoft SQL         Server\...
...\Microsoft SQL     Server\...

และฉันเดาว่านี่ไม่ใช่เส้นทางที่มีอยู่และเนื่องจากพวกมันถูกทำให้สกปรกโดยโคลอนมันจึงมีความเกี่ยวข้องว่ามีช่องว่างเท่าใด


จำนวนช่องว่างไม่ถูกต้อง? ที่ไหน ถ้าฉันคัดลอกและวางพา ธ นี้ใน file explorer ของฉันมันจะไปถึงโฟลเดอร์นี้ได้ดี @ __ @

@thiagocfb ดังนั้นเมื่อคุณเปิดเส้นทางคุณเห็นไฟล์เหล่านั้นหรือไม่
swasheck

ใน "paste" ของคุณคุณมี 9 ตัวอักษรในหนึ่งกรณีและอีก 5 ตัวอักษรระหว่างMicrosoft SQLและServerและนี่คือสิ่งที่แปลกสำหรับฉันเพราะปกติแล้วมันควรจะเป็นอักขระช่องว่างเดียวเท่านั้น ไม่สามารถมองเห็นได้ในขณะนี้เนื่องจากโพสต์ของคุณถูกแก้ไขโดย @marc_s

@swasheck ฉันเห็นไฟล์. pdf หลายไฟล์ไม่ใช่ test1.mdf เป็นไฟล์ที่ฉันพยายามสร้างด้วยข้อความค้นหานี้

@ Luis Siquot โอ้ฉันเห็นต้องเป็นความผิดพลาดของฉันในขณะที่ตั้งค่าการสืบค้นให้แสดงเป็นรหัสขอบคุณสำหรับการเฮด!

0

สคริปต์ด้านบนที่คุณโพสต์ในส่วนคำถามของคุณถูกต้อง อาจเป็นไปได้ว่าเส้นทางของไฟล์ที่คุณพูดถึงใน FILENAME อาจผิด

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

Use Master
go

CREATE DATABASE test1 ON  PRIMARY 
( NAME = N'test1', 
  FILENAME = N'D:\test1.mdf', 
  SIZE = 70656KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1014KB)
 LOG ON 
( NAME = N'test1_log', 
  FILENAME = N'D:\test1_log.ldf', 
  SIZE = 164671KB , MAXSIZE = 1048GB , FILEGROWTH = 10%)
GO
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.