CREATE FILE зіткнулася з помилкою 5 операційної системи (доступ заборонено.)


13

Я намагаюся виконати такий сценарій у студії управління SQL Server:

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%)

Але я отримую помилку:

Msg 5123, рівень 16, стан 1, рядок 2
СТВОРИТИ ФАЙЛ зіткнувся з помилкою операційної системи 5 (доступ заборонено)
під час спроби відкрити або створити фізичний файл
'C: \ програмні файли \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA \ test1.mdf '.

Повідомлення 1802, рівень 16, стан 4, рядок 2
СТВОРИТИ ДАТАБАЗУ не вдалося. Не можна створити деякі перелічені імена файлів. Перевірте пов’язані помилки.

У мене вже є всі дозволи для мого користувача, будь-які ідеї щодо того, що не так?


1
"Ваш користувач" або користувач, який працює у вашій службі? Серверний процес спробує створити цей файл, а не ваш користувач.

1
Ви можете перевірити, чи файл вже існує? (Можливо, з попередніх спроб) Якщо існує і відкривається SqlServer, ви отримуєте помилку в доступі, відхилену

1
Послуги-> Сервер Sql-> Подвійне клацання-> Сторінка другої вкладки (з'єднання?)

1
@thiagocfb Пуск-> Запуск-> services.msc Прокрутіть список служб, поки не знайдете SQL Server. Клацніть правою кнопкою миші-> Властивості-> вкладка Увійти
перекладіть

1
Також ви спробували просто запустити рівнину CREATE DATABASE [test1]; GO?
swasheck

Відповіді:


19

Ви отримуєте помилку дозволів. Обліковий запис, на якому працює SQL Server, не має необхідних прав на папку, яка містить файли бази даних.

Потрібно надати обліковому запису, на якому працює SQL Server (не ваш рахунок), повний контроль над C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA.


Так, проблема була у користувача, який запускав послугу! :) Дякую !
thiagocfb

Взагалі сервіс Windows SQL Server працює під Network Serviceобліковим записом. Тож відповідні права доведеться змінювати у відповідних каталогах цього облікового запису, якщо це теж на вашому ПК.
RBT

3
Принаймні при запуску SSI gui як не адміністратора, для початкової операції приєднання користувальницький запуск SSMS ТАКОЖ повинен мати дозволи в цій папці. Запуск SSMS як адміністратор ВІД ІНТИЦІАЛЬНОГО ВПРОВАДЖЕННЯ це вирішує, і тоді ви можете запускатись як не адміністратор пізніше без проблем.
tbone

6

На основі нашого коментаря нитка здається, що ви, можливо, потрапили трохи вбік під час встановлення. Програма встановлення дозволяє вибрати каталог даних за замовчуванням і (я б припустив ) встановлює відповідні дозволи для цього каталогу для облікового запису служби, який ви вказали.

У своєму CREATE DATABASEзаяві ви вказуєте місце, але чи було це місце, яке було вказано в початковій програмі? Чи змінився обліковий запис служби?

Спосіб перевірити це - просто запустити загальний

CREATE DATABASE [test1]; 
GO

Якщо ви отримаєте ту саму помилку, можливо, обліковий запис служби змінився або щось про дозволи NTFS змінилося.

Шлях до роздільної здатності (також заснований на рядку коментарів) повинен підтвердити, що служба, яка працює на SQL Server, має дозволи R / W на шляху, який ви вказуєте. Зробити це:

Пуск-> Виконати-> services.msc-> прокрутіть список служб, поки не знайдете SQL Server-> клацніть правою кнопкою миші-> властивості-> вкладку Вхід

Тепер перейдіть і переконайтеся, що обліковий запис має відповідний дозвіл у цьому каталозі, щоб робити те, що потрібно зробити.


2

Здається, що в наданому шляху є неправильна кількість пробілів, тому воно не відповідає дереву папок.
Сервер Sql не створить неіснуючий шлях.

Редагувати : у
вашій початковій публікації написано:

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

і я здогадуюсь, що це не існуючі шляхи, і оскільки вони оточені колонами, важливо, скільки там просторів.


неправильна кількість пробілів? де? якщо я скопіюю та вставте цей шлях у мій провідник файлів, він дійде до цієї папки чудово @ __ @

@thiagocfb, коли ви відкриваєте шлях, ви бачите ці файли?
сварка

у вашій "вставці" у вас 9 символів в одному випадку і 5 символів в іншому, між Microsoft SQLі Server, і це було мені дивно, тому що, як правило, це повинен бути лише один пробіл. Зараз це не видно, оскільки ваше повідомлення відредагував @marc_s

@swasheck Я бачу кілька .mdf-файлів, а не test1.mdf, я намагаюся створити цей запит

@ Luu 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.