Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Перенос таблицы в другую файловую группу  [new]
Lisichkin
Member

Откуда:
Сообщений: 485
Добрый день!

Согласно рекомендациям http://www.sqlservercentral.com/articles/Administration/64275/
выполнил команды:

ALTER TABLE TvInfo.TRIP_TEXTS
DROP CONSTRAINT PK_TRIP_TEXTS WITH (MOVE TO [IMAGE])

ALTER TABLE TvInfo.TRIP_TEXTS
ADD CONSTRAINT PK_TRIP_TEXTS PRIMARY KEY CLUSTERED 
( ID ASC )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [IMAGE]


Далее в Management Studio на против таблицы TvInfo.TRIP_TEXTS сказал, что нужно создать скрипт создания..
получил:
CREATE TABLE [TvInfo].[TRIP_TEXTS](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[TRIP_ID] [int] NOT NULL,
	[CLASS_ID] [int] NOT NULL,
	[VALUE] [image] NULL,
	[UPDATED] [datetime] NULL,
	[UPDATEDBY] [int] NULL,
	[LOCATION] [nvarchar](255) NULL,
 CONSTRAINT [PK_TRIP_TEXTS] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [IMAGE]
) ON [IMAGE] TEXTIMAGE_ON [PRIMARY]
 


Получается, что поле [VALUE] [image] храниться в файловой группе [PRIMARY].
Как это исправить??

С Уважением,
Александр.
22 мар 17, 10:55    [20320305]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
o-o
Guest
сюрприз, блобы не переносятся в другую FG.
но если энтерпрайз, можно черезжопно перенести, привлекая секционирование
22 мар 17, 11:01    [20320328]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
o-o
Guest
What about moving LOB data?
22 мар 17, 11:02    [20320337]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
Lisichkin
Member

Откуда:
Сообщений: 485
Microsoft SQL Server 2005 Corporation Enterprise Edition (64-bit)
22 мар 17, 11:04    [20320344]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
Хе-хе )
Guest
Все данные , кроме LoB, хранятся в листьях кластерного индекса.
По этому перенос индекса это и есть перенос таблицы. Но Lob ов там нет...
22 мар 17, 11:42    [20320531]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
o-o
Guest
да он уже увидел, что нет.
и спрашивает, как перенести.
и ему дали ссылку, где по шагам все расписано.
версия и редакция сервера позволяют, чего еще хотеть
22 мар 17, 11:49    [20320568]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
o-o
но если энтерпрайз, можно черезжопно перенести, привлекая секционирование
Интересно, как это вообще в голову пришло? :-)
Неужели не проще создать копию таблицы, раз уж нельзя просто сделать, скажем, alter table?
Да, придётся ещё пересоздавать разные объекты, но ведь это проще, чем шаманить с секционированием?
22 мар 17, 13:50    [20321144]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
Lisichkin
Member

Откуда:
Сообщений: 485
Кому интересно рассказываю пошаговую стратегию http://sqlmag.com/blog/what-about-moving-lob-data

1. select MAX(id) from TvInfo.TRIP_TEXTS - в моем случае 2862
2. CREATE PARTITION FUNCTION fnTRIP_TEXTS (int) AS RANGE RIGHT FOR VALUES (286200)
3. CREATE PARTITION SCHEME schTRIP_TEXTS AS PARTITION fnTRIP_TEXTS TO ([IMAGE], [PRIMARY])
4. ALTER TABLE TvInfo.TRIP_TEXTS DROP CONSTRAINT PK_TRIP_TEXTS
5.
ALTER TABLE TvInfo.TRIP_TEXTS ADD CONSTRAINT PK_TRIP_TEXTS PRIMARY KEY CLUSTERED (ID) ON schTRIP_TEXTS(ID) -- 01:48 для 2862 записей

6.
CREATE TABLE TvInfo.TRIP_TEXTS_T(
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[TRIP_ID] [int] NOT NULL,
	[CLASS_ID] [int] NOT NULL,
	[VALUE] [image] NULL,
	[UPDATED] [datetime] NULL,
	[UPDATEDBY] [int] NULL,
	[LOCATION] [nvarchar](255) NULL,
	CONSTRAINT [PK_TRIP_TEXTS_T] PRIMARY KEY CLUSTERED (ID)
) ON [IMAGE] TEXTIMAGE_ON [IMAGE]

7. По скольку индексы не секционированные, то комманда ALTER TABLE SWITCH не выполняется - удаляю ВСЕ индексы
8. ALTER TABLE TvInfo.TRIP_TEXTS SWITCH PARTITION 1 TO TvInfo.TRIP_TEXTS_T
9. DROP TABLE TvInfo.TRIP_TEXTS
10. EXEC sp_rename 'TvInfo.TRIP_TEXTS_T', 'TRIP_TEXTS'
11. Пересоздаю индексы/CONSTRAINT/FOREIGN KEY
12. sp_rename 'TvInfo.PK_TRIP_TEXTS_T', 'PK_TRIP_TEXTS'

Перезаливка из TvInfo.TRIP_TEXTS в TvInfo.TRIP_TEXTS_T по-моему не многим тяжелее. А если это делать из под Management Studio так и скрипт за тебя напишет :/
22 мар 17, 14:27    [20321364]     Ответить | Цитировать Сообщить модератору
 Re: Перенос таблицы в другую файловую группу  [new]
Lisichkin
Member

Откуда:
Сообщений: 485
ПРЕДУПРЕЖДЕНИЕ!

После выполненных действий, MS SQL отказался вставлять данные в таблице т.к. слетел Seed у Identity column
Лечится командой DBCC CHECKIDENT
22 мар 17, 18:16    [20322411]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить