2011-03-03 4 views
3

Я иду через упражнения: How to Detach and Attach a SQL Server FILESTREAM Enabled DatabaseSQL Server 2008 FileStream: Ошибка при создании базы данных с FileStream

На стадии Создание FILESTREAM Enabled базы данных я выполнить следующий код

Use Master 
GO 
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'FileStreamDB') 
DROP DATABASE FileStreamDB 
GO 
USE master 
GO 
CREATE DATABASE [FileStreamDB] ON PRIMARY 
(NAME = N'FileStreamDB', FILENAME = N'D:\FileStreamDB\FileStreamDB.mdf', 
SIZE = 10MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10%) 
LOG ON 
(NAME = N'FileStreamDB_log', FILENAME = N'D:\FileStreamDB\FileStreamDB_log.ldf' , 
SIZE = 10MB , MAXSIZE = UNLIMITED , FILEGROWTH = 10%) 
GO 
ALTER DATABASE [FileStreamDB] 
ADD FILEGROUP [FileStreamGroup] CONTAINS FILESTREAM 
GO 

все это работает нормально, пока не забуду последний шаг:

ALTER DATABASE [FileStreamDB] 
ADD FILE (NAME = N'FileStreamDB_FSData', FILENAME = N'D:\FileStreamDB\FileStreamData') 
TO FILEGROUP FileStreamGroup 
GO 

Когда этот код выполняется, я получаю Следующий ошибки:

Msg 5120, Level 16, State 106, Line 1 Unable to open the physical file "D:\FileStreamDB\FileStreamData". Operating system error -2147024891: "0x80070005(failed to retrieve text for this error. Reason: 1815)".

бегаю SQL Server 2008 Enterprise (Evaluation License) на Windows XP Professional. Фильтр настроен как microsoft instructions

В чем причина этой ошибки?

+0

Вы создали пустую папку сначала в '' D: \ FileStreamDB \ FileStreamData''? –

+0

@Martin, нет, но если я это сделаю, я получаю еще одну ошибку: Msg 5170, Level 16, State 2, Line 1 Невозможно создать файл 'D: \ FileStreamDB \ FileStreamData', потому что он уже существует. Измените путь к файлу или имя файла и повторите операцию. – padn

+0

Я думаю, что ответ Джо выглядит вероятным. –

ответ

3

Это, вероятно, вопрос разрешений. Вам необходимо предоставить явные разрешения учетной записи службы SQL Server на D:\FileStreamDB.

+0

Joe, я сумасшедший, чтобы создать папку FileStreamData, а также перед выполнением кода sql? – padn

+0

@padn: Моя ошибка в пути к файлу. Вы не хотите создавать эту папку. Это более высокий уровень, где должны быть установлены разрешения: 'D: \ FileStreamDB'. Я исправил свой ответ. –

2

Вы используете Windows XP. Если вы также используете Network Service или Локальная система в качестве учетной записи SQL Server, вы можете страдать от этой ошибки:

http://connect.microsoft.com/SQLServer/feedback/details/435855/operating-system-error-2147024891-0x80070005-access-is-denied

Самое простое решение заключается в использовании другой учетной записи для SQL Server. Второй вариант - загрузить исправление XP, упомянутое в ссылке. Мне это не нравится; исправление находится с 2010 года и не выглядит поддерживаемым и интегрированным в новые исправления XP. По крайней мере, моя система XP актуальна в отношении исправлений, и у меня все еще была проблема.

Я только что потратил три часа на поиски источника проблемы, прежде чем нашел ссылку, подтверждающую, что это ошибка в Windows XP. После изменения учетной записи SQL Server она работала сразу.

+0

Точная ошибка на сервере Windows 2003. Я изменил службу SQL Server, чтобы использовать учетную запись Local Service, а не одну из других. Работала отлично. Благодарю. – NotMe

0

Произошла ошибка в MS SQL 2014. Проверено ACL три раза. Проблема заключалась в том, что я использовал путь для папки filestream через функцию связанных папок в NTFS. С реальным физическим путем, уходящим корнями из реального письма с HDD, работало как шарм.

P.S. Filepathes для других типов файлов базы данных работают корректно даже через связанные папки.

Смежные вопросы