BUAT FILE menemui kesalahan sistem operasi 5 (Akses ditolak.)

13

Saya mencoba menjalankan skrip berikut di 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%)

Tapi saya mendapatkan kesalahan:

Msg 5123, Level 16, State 1, Line 2
CREATE FILE menemukan kesalahan sistem operasi 5 (Akses ditolak.)
Ketika mencoba membuka atau membuat file fisik
'C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA \ test1.mdf '.

Msg 1802, Level 16, Negara 4, Jalur 2
BUAT DATABASE gagal. Beberapa nama file yang tercantum tidak dapat dibuat. Periksa kesalahan terkait.

Sudah memiliki semua izin peran untuk pengguna saya, ada ide tentang apa yang salah?

thiagocfb
sumber
1
"Pengguna Anda" atau pengguna yang digunakan oleh layanan Anda? Proses server akan mencoba membuat file itu, bukan pengguna Anda.
1
Bisakah Anda memeriksa apakah file sudah ada? (Mungkin dari upaya sebelumnya) Jika ada dan dibuka oleh SqlServer Anda mendapatkan kesalahan akses ditolak
1
Layanan-> Sql Server-> Klik Ganda-> Halaman Tab Kedua (Sambungan?)
1
@ thiagocfb Start-> Run-> services.msc Gulir ke seluruh daftar layanan hingga Anda menemukan SQL Server. Klik kanan-> Properti-> Tab Masuk
swasheck
1
Juga, sudahkah Anda mencoba menjalankan dataran CREATE DATABASE [test1]; GO?
swasheck

Jawaban:

19

Anda mendapatkan kesalahan izin. Akun yang menjalankan SQL Server tidak memiliki hak yang diperlukan pada folder yang akan berisi file database.

Anda perlu memberikan akun yang menjalankan SQL Server (bukan akun Anda) kontrol penuh C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA.

mrdenny
sumber
Yap, masalahnya adalah pengguna yang menjalankan layanan! :) terima kasih!
thiagocfb
Secara umum layanan SQL Server windows dijalankan di bawah Network Serviceakun. Jadi hak yang sesuai harus diubah pada direktori masing-masing untuk akun ini jika itu terjadi pada PC Anda juga.
RBT
3
Setidaknya ketika menjalankan SSMS gui sebagai pengguna non-admin, untuk operasi lampiran awal , userid yang menjalankan SSMS juga harus memiliki izin di folder itu. Menjalankan SSMS sebagai administrator SELAMA INTIAL ATTACH menyelesaikan ini, dan kemudian Anda dapat menjalankan sebagai non-admin nanti tanpa masalah.
tbone
6

Berdasarkan utas komentar kami, sepertinya Anda membuat diri Anda sedikit miring saat menginstal. Penginstal memungkinkan Anda untuk memilih direktori data default dan (saya akan berasumsi ) menetapkan izin yang sesuai pada direktori itu untuk akun layanan yang Anda tentukan.

Dalam CREATE DATABASEpernyataan Anda, Anda menentukan lokasi, tetapi apakah lokasi itu yang ditentukan dalam pengaturan awal? Sudahkah akun layanan berubah?

Cara untuk menguji ini adalah dengan menjalankan generik

CREATE DATABASE [test1]; 
GO

Jika Anda mendapatkan kesalahan yang sama maka mungkin akun layanan telah berubah atau sesuatu tentang izin NTFS telah berubah.

Jalur resolusi (juga didasarkan pada string komentar) adalah untuk mengkonfirmasi bahwa layanan yang menjalankan SQL Server memiliki izin R / W di jalur yang Anda tentukan. Untuk melakukan ini:

Mulai-> Jalankan-> services.msc-> gulir daftar layanan hingga Anda menemukan SQL Server-> klik kanan-> properti-> tab Log On

Sekarang buka dan pastikan akun memiliki izin yang sesuai pada direktori itu untuk melakukan apa yang perlu dilakukan.

swasheck
sumber
2

Tampaknya ada jumlah ruang yang salah di jalur yang disediakan, jadi, itu tidak cocok dengan folder pohon.
Sql server tidak akan membuat jalur yang tidak ada.

Sunting :
Posting asli Anda mengatakan:

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

dan saya kira ini bukan jalan yang ada, dan karena disorot oleh titik dua, relevan berapa banyak ruang yang ada.

Luis Siquot
sumber
jumlah spasi yang salah? dimana? jika saya salin dan tempel path ini di file explorer saya akan mencapai folder ini dengan baik @ __ @
@ thiagocfb jadi ketika Anda membuka path, apakah Anda melihat file-file itu?
swasheck
di "tempel" Anda, Anda memiliki 9 karakter dalam satu kasus dan 5 karakter dalam yang lain, di antara Microsoft SQLdan Server, dan ini aneh bagi saya karena biasanya hanya satu karakter spasi. Itu tidak terlihat sekarang karena pos Anda diedit oleh @marc_s
@swasheck Saya melihat beberapa file .mdf, bukan test1.mdf, ini yang saya coba buat dengan permintaan ini
@Luis Siquot oh begitu, pasti kesalahan saya saat mengatur kueri yang akan ditampilkan sebagai kode, terima kasih untuk head-up!
0

Skrip di atas yang Anda posting di bagian pertanyaan Anda sudah benar. Mungkin saja jalur file yang Anda sebutkan di FILENAME bisa salah.

Silakan gunakan skrip yang diberikan di bawah ini. Ini hanya berfungsi kemudian pastikan path file yang Anda gunakan dalam skrip Anda.

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
JP Chauhan
sumber