CREATE FILE gặp phải lỗi hệ điều hành 5 (Truy cập bị từ chối.)


13

Tôi đang cố gắng thực thi đoạn mã sau trong 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%)

Nhưng tôi đang nhận được lỗi:

Msg 5123, Cấp 16, Trạng thái 1, Dòng 2
TẠO TẬP TIN gặp lỗi hệ điều hành 5 (Truy cập bị từ chối.)
Trong khi cố gắng mở hoặc tạo tệp vật lý
'C: \ Chương trình tập tin \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DỮ LIỆU \ test1.mdf '.

Msg 1802, Cấp 16, Bang 4, Dòng 2
TẠO RA CƠ SỞ thất bại. Một số tên tập tin liệt kê không thể được tạo ra. Kiểm tra các lỗi liên quan.

Đã có tất cả các quyền vai trò cho người dùng của tôi, có ý tưởng nào về những gì sai không?


1
"Người dùng của bạn" hoặc người dùng dịch vụ của bạn đang chạy như thế nào? Quá trình máy chủ sẽ cố gắng tạo tệp đó, không phải người dùng của bạn.

1
Bạn có thể kiểm tra nếu tập tin đã tồn tại? (Có lẽ từ các lần thử trước) Nếu tồn tại và được mở bởi SqlServer, bạn sẽ gặp lỗi từ chối truy cập

1
Dịch vụ-> Máy chủ Sql-> Nhấp đúp chuột -> Trang tab thứ hai (Kết nối?)

1
@thiagocfb Bắt đầu-> Run-> services.msc Cuộn qua danh sách các dịch vụ cho đến khi bạn tìm thấy SQL Server. Nhấp
chuột phải-

1
Ngoài ra, bạn đã thử chỉ chạy một đồng bằng CREATE DATABASE [test1]; GO?
swasheck

Câu trả lời:


19

Bạn đang nhận được một lỗi quyền. Tài khoản đang chạy SQL Server không có các quyền cần thiết trên thư mục chứa các tệp cơ sở dữ liệu.

Bạn cần cung cấp cho tài khoản đang chạy SQL Server (không phải tài khoản của bạn) toàn quyền kiểm soát C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA.


Đúng, vấn đề là người dùng đang chạy dịch vụ! :) Cảm ơn !
thiagocfb

Nói chung, dịch vụ Windows Server chạy trong Network Servicetài khoản Vì vậy, các quyền thích hợp sẽ phải sửa đổi trên các thư mục tương ứng cho tài khoản này nếu đó cũng là trường hợp trên PC của bạn.
RBT

3
Ít nhất là khi chạy gui SSMS với tư cách là người dùng không phải quản trị viên, đối với thao tác đính kèm ban đầu , SSMS người dùng đang chạy phải C ALNG có quyền trong thư mục đó. Chạy SSMS với tư cách quản trị viên DURING ATTACH BAN ĐẦU giải quyết điều này, và sau đó bạn có thể chạy với tư cách là quản trị viên sau này mà không gặp sự cố.
xương sống

6

Dựa trên chủ đề bình luận của chúng tôi, có vẻ như bạn có thể đã nhận được một chút đi ngang trong khi cài đặt. Trình cài đặt cho phép bạn chọn thư mục dữ liệu mặc định của mình và (tôi sẽ giả sử ) đặt các quyền thích hợp trên thư mục đó cho tài khoản dịch vụ mà bạn đã chỉ định.

Trong CREATE DATABASEtuyên bố của bạn, bạn chỉ định một vị trí, nhưng đó có phải là vị trí được chỉ định trong thiết lập ban đầu không? Tài khoản dịch vụ đã thay đổi?

Một cách để kiểm tra điều này là chỉ chạy một cái chung

CREATE DATABASE [test1]; 
GO

Nếu bạn gặp lỗi tương tự thì có lẽ tài khoản dịch vụ đã thay đổi hoặc có điều gì đó về quyền NTFS đã thay đổi.

Đường dẫn phân giải (cũng dựa trên chuỗi nhận xét) là để xác nhận rằng dịch vụ đang chạy SQL Server có quyền R / W trên đường dẫn mà bạn chỉ định. Để làm điều này:

Bắt đầu-> Chạy-> services.msc-> cuộn qua danh sách dịch vụ cho đến khi bạn tìm thấy SQL Server-> nhấp chuột phải-> thuộc tính-> tab Đăng nhập

Bây giờ hãy đi và đảm bảo rằng tài khoản có quyền thích hợp trên thư mục đó để làm những gì nó cần làm.


2

Có vẻ có số lượng không gian không chính xác trong đường dẫn được cung cấp, vì vậy, nó không khớp với cây thư mục.
Máy chủ Sql sẽ không tạo đường dẫn không tồn tại.

Chỉnh sửa :
Bài viết gốc của bạn nói:

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

và tôi đoán đây không phải là những con đường hiện có, và vì chúng được bao quanh bởi các dấu hai chấm, nên có bao nhiêu khoảng trống ở đó.


số lượng không gian không chính xác? Ở đâu ? nếu tôi sao chép và dán đường dẫn này vào trình thám hiểm tệp của mình, nó sẽ đến thư mục này tốt thôi @ __ @

@thiagocfb vậy khi bạn mở đường dẫn bạn có thấy những tập tin đó không?
swasheck

trong phần "dán" của bạn, bạn có 9 ký tự trong một trường hợp và 5 ký tự khác, giữa Microsoft SQLServer, và điều này là lạ đối với tôi bởi vì bình thường nó chỉ nên là một ký tự không gian. Hiện tại nó không hiển thị vì bài đăng của bạn đã được chỉnh sửa bởi

@swasheck Tôi thấy một số tệp .mdf, không phải test1.mdf, đây là tệp tôi đang cố gắng tạo với truy vấn này

@Luis Siquot oh tôi thấy, chắc là lỗi của tôi trong khi đặt truy vấn được hiển thị dưới dạng mã, cảm ơn vì đã đề phòng!

0

Kịch bản trên mà bạn đăng trong phần câu hỏi của bạn là chính xác. Có thể đường dẫn tệp mà bạn đề cập trong FILENAME có thể sai.

Vui lòng sử dụng các kịch bản được đưa ra dưới đây. Nó chỉ đơn giản hoạt động sau đó đảm bảo đường dẫn tệp mà bạn sử dụng trong tập lệnh của mình.

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
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.