Comment remplir supprimer filestream et tous les fichiers joints

J'ai essayé la fonctionnalité FILESTREAM pour MSSQL (2008R2 Centre de Données) sur une base de données locale, d'expérimenter. La vraie base de données est en cours d'exécution sur un serveur. J'ai d'installation de l'ensemble de la FILESTREAM, à l'aide de cette requête:

/* CREATE FILESTREAM AND FILESTREAM TABLE */
USE [master]
GO
ALTER DATABASE SenONew
ADD FILEGROUP [FileStream]
CONTAINS FILESTREAM
GO
ALTER DATABASE SenONew
ADD FILE
(
NAME = 'fsSenONew',
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SenONew.ndf'
)
TO FILEGROUP [FileStream]
GO

USE [SenONew]
GO
CREATE TABLE Filestore(
    FileID int PRIMARY KEY,
    RowID uniqueidentifier ROWGUIDCOL NOT NULL UNIQUE DEFAULT NEWSEQUENTIALID(),
    FileDescr nvarchar(max),
    FileIndex varbinary(max) FILESTREAM NULL)
GO

Et je faisais des expériences avec l'ajout d'un certain nombre de fichiers, puis de les supprimer.

Maintenant, puisque c'était uniquement destinée à être une expérience, j'ai aussi envie de se débarrasser de lui. Je suis avec mon serveur local pour le développement de la base de données qui sera utilisé sur le serveur réel, donc je suis à la création de la Sauvegarde sur mon serveur local puis Restaurer ce sur le vrai serveur, donc il s'est mis à jour (le logiciel est en cours de développement, la structure de la base de changements beaucoup ainsi que les données et j'ai besoin de faire une restauration complète au serveur réel, où le logiciel est en cours de tests).

Après des heures de recherche, je n'ai rien trouvé sur mon problème.

Je comprends que j'ai besoin de:

  1. Supprimer la table de base de données stockant les FILESTREAM informations
  2. J'ai besoin de supprimer le FICHIER de la FILESTREAM
  3. Supprimer le groupe de fichiers

Donc je suis en utilisant cette requête pour se débarrasser de tout ce que j'ai mis en place dans la première place:

/* DROP FILESTREAM TABLE AND FILEGROUP */
USE SenONew
DROP TABLE Filestore
GO

ALTER DATABASE SenONew
REMOVE FILE fsSenONew

ALTER DATABASE SenONew
REMOVE FILEGROUP [FileStream]
GO

Donc je fais tout comme je le devrais et il se termine sans erreur. Donc quand je rentre de mes groupes de fichiers, de fichiers et de mon emplacement du fichier, je vois qu'ils sont tous complètement supprimée:

Comment remplir supprimer filestream et tous les fichiers joints
Comment remplir supprimer filestream et tous les fichiers joints
Comment remplir supprimer filestream et tous les fichiers joints

Mais quand je fais une SAUVEGARDE de ma base de données locale (qui incluent la supprimé FILESTREAM, le chemin du fichier et le groupe de fichiers) et d'essayer de rétablir le serveur avec elle, j'ai des erreurs.

SQL pour créer une SAUVEGARDE:

/* CREATE BACKUP OF DATABASE WITHIN CURRECT CONNECTION */
DECLARE @FileName2 nvarchar(250)
SELECT @FileName2 = (SELECT 'C:\SenO BackUp\' + convert(nvarchar(200),GetDate(),112) + ' SenONew.BAK')
BACKUP DATABASE SenONew TO DISK=@FileName2
GO

Comment remplir supprimer filestream et tous les fichiers joints

Puis faire de la Restauration sur le serveur:

/* CREATE RESTORE OF DATABASE WITHIN REAL SERVER CONNECTION */
use master
alter database SenONew set offline with rollback immediate;

DECLARE @FileName2 nvarchar(250)
SELECT @FileName2 = (SELECT '' + convert(nvarchar(200),GetDate(),112) + ' SenONew.BAK')
RESTORE DATABASE SenONew
FROM DISK = @FileName2

alter database SenONew set online with rollback immediate;

J'obtiens l'erreur suivante:

Comment remplir supprimer filestream et tous les fichiers joints

*(Msg 5121, Niveau 16, État 2, Ligne 7
Le chemin d'accès spécifié par "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SenONew.ndf" n'est pas dans un répertoire valide.

Msg 3156, Niveau 16, État 3, Ligne 7 Fichier 'fsSenONew' ne peut pas être restauré à 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\SenONew.ndf'. Utilisation AVEC MOVE pour identifier un emplacement valide pour le fichier.

Msg 3119, Niveau 16, État 1, Ligne 7 Problèmes ont été identifiés lors de la planification de l'instruction RESTORE. Messages précédents fournir des détails.

Msg 3013, Niveau 16, État 1, Ligne 7 RESTAURER la BASE de données se termine anormalement. )*

J'ai supprimé le .ndf FILESTREAM emplacement, pourquoi est-il un chemin d'accès spécifié? Aussi, pourquoi est-fsSenONew de tenter de rétablir l'? Je ne peux pas obtenir ma tête autour de lui. Existe-il des chemins à l'interne que j'ai besoin de supprimer?

Pourrais-je vous suggérer de Sauvegarde et de Restauration n'est pas la meilleure façon de développer une base de données? Il peut travailler bien pour l'instant mais dès que la base de données est utilisé dans la production, ça va plus être une approche viable (sauf s'essuyant les données de production est d'accord). En vertu de cette hypothèse, pourquoi ne pas développer l'approche alternative que vous en aurez besoin plus tard?
De sauvegarde et de Restauration semble fonctionner parfaitement pour le moment. Comme je l'ai mentionné plus tôt, la structure de base de données change beaucoup en raison de sa phase de développement. À la fin du projet, la structure de base de données sera rempli avec de l'actuel réel les données de l'entreprise. Seulement après que sera le nouveau logiciel sera utilisé en production, et aucune modification ne sera faite sur le serveur réel.

OriginalL'auteur TMNuclear | 2014-11-07