Я использую Microsoft SQL Server 2012 (SP3) и имею базы данных, использующие функцию FILESTREAM, которая будет хранить данные в отдельных файлах для определенных столбцов.База данных выглядит следующим образом:
CREATE DATABASE [MyDatabase]
GO
ALTER DATABASE [MyDatabase]
ADD FILEGROUP [FileStreamDataFileGroup] CONTAINS FILESTREAM
GO
ALTER DATABASE [MyDatabase]
ADD FILE ( NAME = N'MyDatabase_FileStreamData',
FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\DATA\MyDatabase-FileStreamData'
) TO FILEGROUP [FileStreamDataFileGroup]
GO
CREATE TABLE [MyDatabase].[dbo].[MyTable]
(
[Id] BIGINT NOT NULL,
[DataId] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL,
[Content] VARBINARY (MAX) FILESTREAM NULL,
CONSTRAINT [PK__PredictionModel] PRIMARY KEY CLUSTERED ([Id] ASC),
UNIQUE NONCLUSTERED ([DataId] ASC)
) FILESTREAM_ON [FileStreamDataFileGroup];
GO
Я запускаю тесты, которые постоянно создают новые базы данных, запускаю тесты и впоследствии удаляю их.Сервер SQL находится под большой нагрузкой, потому что тесты выполняются параллельно на нескольких базах данных.В некоторых редких случаях (<1%) сбрасывание базы данных завершается ошибкой: </p>
Не удается удалить файл 'C: \ Program Files \ Microsoft SQL Server \ MSSQL11 \ MSSQL \ DATA \ MyDatabase-FileStreamData',Дополнительные сведения см. В журнале ошибок SQL Server.
В журналах SQL Server отображаются следующие журналы:
Операционная система возвратила ошибку «5 (доступ запрещен)», в то время какпопытка 'StreamFileMgr :: DoDeleteFsFile' в 'C: \ Program Files \ Microsoft SQL Server \ MSSQL11 \ MSSQL \ DATA \ MyDatabase-FileStreamData' в 'stmfilemgr.cpp' (5314).
Операционная система вернулаошибка «5 (доступ запрещен)» при попытке «RemoveDirectory» в «C: \ Program Files \ Microsoft SQL Server \ MSSQL11 \ MSSQL \ DATA \ MyDatabase-FileStreamData \ 8a803ce2-3e97-4d60-8aa1-e704d858aae9 \ c802f11a-9c13-4040-9e53-bcd3c67b7960 'at' storage.cpp '(851).
Операционная система вернула ошибку «5 (доступ запрещен)» при попытке «RemoveDirectory» в «C: \ Program Files \ Microsoft»SQL Server \ MSSQL11 \ MSSQL \ DATA \ MyDatabase-FileStreamData \ 8a803ce2-3e97-4d60-8aa1-e704d858aae9 \ c802f11a-9c13-4040-9e53-bcd3c67b7960 'в' storage.cpp '(851).
101операционная система вернула ошибку '5 (AccessОтклонено) при попытке «Удалить каталог» в «C: \ Program Files \ Microsoft SQL Server \ MSSQL11 \ MSSQL \ DATA \ MyDatabase-FileStreamData \ 8a803ce2-3e97-4d60-8aa1-e704d858aae9 \ c802f11a-9c13-4040-9e53-bcdc'at' storage.cpp '(851).
Операционная система вернула ошибку «5 (доступ запрещен)» при попытке «RemoveDirectory» на «C: \ Program Files \ Microsoft SQL Server \ MSSQL11 \»MSSQL \ DATA \ MyDatabase-FileStreamData \ 8a803ce2-3e97-4d60-8aa1-e704d858aae9 \ c802f11a-9c13-4040-9e53-bcd3c67b7960 'в' storage.cpp '(851).
база данныхдействительно исчез (файлы .mdf
и .ldf
удалены), но папка C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\DATA\MyDatabase-FileStreamData
все еще существует.
Это своего рода противоречивое состояние, которое трудно обойти, потому что никто, кроме пользователя службы SQL Server, не может получить к нему доступ и удалить его.
Есть ли у кого-нибудь какие-то подсказки, что пошло не так и как я могу это сделать?решить это?