CREATE FILE, işletim sistemi hatası 5 ile karşılaştı (Erişim reddedildi.)


13

SQL Server Management Studio'da aşağıdaki komut dosyasını yürütmeye çalışıyorum:

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

Ama hatayı alıyorum:

Msg 5123, Düzey 16, Durum 1, Satır 2
CREATE FILE, 'C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \
fiziksel dosyasını açmaya veya oluşturmaya çalışırken işletim sistemi hatası 5 (Erişim engellendi.)
İle karşılaştı. DATA \ test1.mdf'.

Msg 1802, Seviye 16, Durum 4, Satır 2
VERİ TABANI OLUŞTUR. Listelenen bazı dosya adları oluşturulamadı. İlgili hataları kontrol edin.

Zaten benim kullanıcı için tüm rol izinleri var, sorun ne hakkında herhangi bir fikir?


1
"Kullanıcınız" veya hizmetinizin çalıştığı kullanıcı? Sunucu işlemi, kullanıcı değil kullanıcı oluşturmaya çalışır.

1
Dosyanın zaten var olup olmadığını kontrol edebilir misiniz? (Belki daha önceki denemelerden) Varsa ve SqlServer tarafından açılırsa, erişim reddedildi hatası alıyorsunuz

1
Hizmetler-> Sql Server-> Çift Tıklama-> İkinci Sekme Sayfası (Bağlantı?)

1
@thiagocfb Başlat-> Çalıştır-> services.msc SQL Server'ı bulana kadar hizmetler listesinde ilerleyin. Sağ
Tıklama-

1
Ayrıca, sadece bir ova çalıştırmayı denediniz CREATE DATABASE [test1]; GOmi?
swasheck

Yanıtlar:


19

Bir izin hatası alıyorsunuz. SQL Server çalıştıran hesap, veritabanı dosyalarını içeren klasör üzerinde gerekli haklara sahip değil.

SQL Server çalıştıran hesaba (hesabınızı değil) C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA'nın tam denetimini vermeniz gerekir.


Evet, sorun hizmeti çalıştıran kullanıcıydı! :) Teşekkürler !
thiagocfb

Genel olarak SQL Server Windows hizmeti Network Servicehesap altında çalışır . Bu nedenle, PC'nizde de durum söz konusuysa, bu hesap için ilgili dizinlerde uygun hakların değiştirilmesi gerekecektir.
RBT

3
En azından SSMS gui'sini yönetici olmayan bir kullanıcı olarak çalıştırırken, ilk ekleme işlemi için SSMS çalıştıran kullanıcı kimliği de bu klasörde izinlere sahip olmalıdır. BAŞLANGIÇ ATTACH SIRASINDA SSMS'yi yönetici olarak çalıştırmak bunu çözer ve daha sonra sorunsuz olarak yönetici olmayan olarak çalıştırabilirsiniz.
tbone

6

Yorum iş parçacığımıza dayanarak, yükleme sırasında kendinizi biraz yanlara almış olabilirsiniz. Yükleyici varsayılan veri dizinini seçmenize olanak verir ve (ı ediyorum varsayalım ) Eğer belirtilen hizmet hesabı için bu dizinin uygun izinleri ayarlar.

Senin içinde CREATE DATABASEdeyimi bu konum orijinal kurulumunda belirtildi birini bir konum belirleyerek, ama değil mi? Hizmet hesabı değişti mi?

Bunu test etmenin bir yolu, sadece genel bir

CREATE DATABASE [test1]; 
GO

Aynı hatayı alırsanız, belki de hizmet hesabı değişti veya NTFS izinleriyle ilgili bir şey değişti.

Çözüm yolu (açıklama dizesine dayalı olarak), SQL Server çalıştıran hizmetin belirttiğiniz yolda R / W izinlerine sahip olduğunu doğrulamaktır. Bunu yapmak için:

services.mscSQL Server-> sağ tık-> özellikler-> Oturum Aç sekmesini bulana kadar Başlat-> Çalıştır-> -> hizmetler listesinde ilerleyin

Şimdi gidin ve hesabın yapması gerekenleri yapmak için bu dizinde uygun izne sahip olduğundan emin olun.


2

Verilen yolda yanlış sayıda boşluk var, bu nedenle klasör ağacıyla eşleşmiyor.
Sql sunucusu varolmayan bir yol oluşturmaz.

Düzenleme :
Orijinal yayınınız şunları söylüyor:

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

ve sanırım bu varolan yollar değil ve iki nokta üst üste tarafından çevrildiklerinden, orada ne kadar alan bulunduğuyla ilgili.


yanlış boşluk sayısı? nerede ? Bu yolu benim dosya gezgini üzerinde kopyalayıp yapıştırırsam, bu klasöre ulaşacaktır @ __ @

@thiagocfb yani yolu açtığınızda bu dosyaları görüyor musunuz?
swasheck

içinde senin sen arasına, bir vakada 9 karakter ve diğer 5 karakter var "yapıştır" Microsoft SQLve Serverve normalde sadece bir boşluk karakteri olmalıdır çünkü bu bana garip oldu. Gönderiniz @marc_s

@swasheck Test1.mdf değil birkaç .mdf dosyası görüyorum, bu sorgu ile oluşturmaya çalıştığım

@Luis Siquot oh Anlıyorum, sorguyu kod olarak gösterilecek şekilde ayarlarken benim hatam olmalı, heads-up için teşekkürler!

0

Soru bölümünüzde yayınladığınız yukarıdaki komut dosyası doğrudur. FILENAME dosyasında belirttiğiniz dosya yolunun yanlış olması mümkün olabilir.

Lütfen aşağıda verilen komut dosyasını kullanın. Basitçe çalışır sonra betiğinizde kullandığınız dosya yolundan emin olun.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.