2016-04-12 1 views
1

У меня есть приложение WinForms, которое создает таблицы динамически на основании данной таблицы, такие как:Создать таблицу под определенным FileGroup WHERE 1 = 2

SELECT * INTO TempTable FROM MyTable WHERE 1=2 

Я хочу тех Temp tables быть создан под конкретный filegroup, хотя с помощью приведенный выше синтаксис.

Синтаксис для создания таблицы под файловой группой является:

CREATE TABLE [dbo].[TempTable](

      [RECORDID] [numeric](10, 0) NOT NULL, 
      --etc etc 

) ON [TempFileGroup] TEXTIMAGE_ON [TempFileGroup] 

Можно ли использовать мой выше синтаксис для создания таблицы под конкретной файловой группой?

+1

я должен пропускать некоторые простые подробности здесь: когда делает 1 * когда-либо * равно 2? – levelonehuman

+1

@levelonehuman Я думаю, что фильм Люси объяснил это. –

+0

@ColinMackay Ну, я слишком молод, слишком защищен, или оба, чтобы получить ссылку. Редактировать: Я слишком защищен. – levelonehuman

ответ

0

BOL утверждает, что

SELECT ... INTO создает новую таблицу в файловой группе по умолчанию

(курсив добавлен)

так что если вы не можете найти таблицу, был создан и alter it с синтаксисом аргумента ниже, новая созданная таблица будет создана в файловой группе по умолчанию.

MOVE TO {partition_scheme_name (column_name [1, ... n]) | filegroup | "default"}

Относится к: SQL Server 2008 - SQL Server 2016, SQL Database V12.

Указывает местоположение для перемещения строк данных, находящихся в настоящее время на уровне листа кластерного индекса. Таблица перемещается в новое место. Этот параметр применяется только к ограничениям, которые создают кластеризованный индекс.

1

Я хочу, чтобы эти таблицы Temp должны быть созданы в соответствии с конкретной файловой группой, хотя с использованием вышеуказанного синтаксиса

От SQL Server 2017+ можно использовать ON filegroup синтаксис.

INTO clause

SELECT ... INTO создает новую таблицу в файловой группе по умолчанию и вставляет результирующие строки из запроса в него.

[ INTO new_table ] 
[ ON filegroup] 

файловая группа

Задает имя файловой группы, в которой будет создана новая таблица. Указанная файловая группа должна существовать в базе данных, иначе механизм SQL Server выдает ошибку. Эта опция поддерживается только с SQL Server 2017.

Пример из MSDN:

Создание новой таблицы как копию другой таблицы и загрузки его в указанный файловой группы

ALTER DATABASE [AdventureWorksDW2016] ADD FILEGROUP FG2; 
ALTER DATABASE [AdventureWorksDW2016] 
ADD FILE 
(
NAME='FG2_Data', 
FILENAME = '/var/opt/mssql/data/AdventureWorksDW2016_Data1.mdf' 
) 
TO FILEGROUP FG2; 
GO 
SELECT * INTO [dbo].[FactResellerSalesXL] ON FG2 from [dbo].[FactResellerSales] 
Смежные вопросы