Skocz do zawartości

Jak wyłączyć FILESTREAM?

Polecane posty

Wyłączenie FS jest trochę bardziej kłopotliwe niż włączanie.

Udało mi się usunąć wykonując czynność analogiczne jak przy dodawaniu,  tylko w odwrotnej kolejności :)

 

Jeżeli FS dodawano wg instrukcji z SDK to odwrotną procedurę można przeprowadzić poniższym skryptem.

Należy pamiętać o przetestowaniu tego na kopii roboczej

Należy skorygować nazwy tabel i baz danych

I jeszcze raz pamiętać o archiwum przed wykonaniem operacji na bazie docelowej

/* Odkręcanie FS na poziomie tabeli */
--
-- tutaj przykład dla tabeli [ModelDanychContainer].[ZawartosciDokumentow]
-- baza danych nazywa się Nexo_ECP 
-- jest to o tle istotne, że nazwa ta pojawia się przy usuwaniu grup 
-- filesreamowych i przy "porządkowaniu" tablei
-- grupa filesteramowa nazywa się [nexo_ECP.fst]
-- 

/* Backup (stare pole z FS)*/
EXEC sp_rename '[ModelDanychContainer].[ZawartosciDokumentow].[Dane]', 'DaneBak', 'COLUMN';
GO

/* Nowe pole (bez FS)*/
ALTER TABLE [ModelDanychContainer].[ZawartosciDokumentow]
ADD
[Dane] [varbinary](max) NULL
GO

/* Przepisanie wartości do „nowej” struktury  (bez FS)*/
UPDATE ModelDanychContainer.ZawartosciDokumentow 
SET
Dane = DaneBak
GO
/* usunięcie „niepotrzebnej” już kolumny */
ALTER TABLE [ModelDanychContainer].[ZawartosciDokumentow]
DROP COLUMN
DaneBak
GO

/* poniższy zabieg ma na celu usuniecie powiązań z grupą FS, bo dodawanie FS dodaje takowe */

/* usunięcie i utworzenie PK_ZawartosciDokumentow*/
ALTER TABLE [ModelDanychContainer].[ZawartosciDokumentow] 
DROP CONSTRAINT [PK_ZawartosciDokumentow] WITH ( ONLINE = OFF )
GO

ALTER TABLE [ModelDanychContainer].[ZawartosciDokumentow] ADD  CONSTRAINT [PK_ZawartosciDokumentow] 
PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) 
ON [PRIMARY] 
GO

ALTER TABLE [ModelDanychContainer].[ZawartosciDokumentow]
SET (FILESTREAM_ON = "NULL")


ALTER DATABASE [Nexo_ECP] REMOVE FILE [nexo_ECP.fst]
GO
ALTER DATABASE [Nexo_ECP] REMOVE FILEGROUP [FileStreamGroup]
GO

/* porządkowanie */
DBCC CLEANTABLE 
(Nexo_ECP,'[ModelDanychContainer].[ZawartosciDokumentow]', 512)
GO

/* Odbudowa indeksów */
ALTER INDEX ALL ON [ModelDanychContainer].[ZawartosciDokumentow]
REBUILD; 
GO

 

Link to postu
×
×
  • Dodaj nową pozycję...