Войти

Показать полную графическую версию : как посмотреть скрипт создания таблицы с индексами в ms sql


akasha9
16-03-2013, 00:23
Добрый вечер. Извините за возможно глупый вопрос.

Подскажите решение следующей задачи:

как посмотреть скрипт создания таблицы с индексами в ms sql server 2005 express edition

Delirium
16-03-2013, 10:26
На таблице правой кнопкой - создать сценарий - используя Create. Делать, естественно, в SSMS.

akasha9
16-03-2013, 15:23
На таблице правой кнопкой - создать сценарий - используя Create. Делать, естественно, в SSMS. »

Выполнив выше приведенные манипуляции получил скрипт на создание таблицы-кучи, а не скрипт создания таблицы с индексами.

lxa85
16-03-2013, 16:08
akasha9, Выполнив выше приведенные манипуляции получил скрипт на создание таблицы-кучи, а не скрипт создания таблицы с индексами. »
Поясните пожалуйста ответ.
Вы имеете ввиду CREATE INDEX (Transact-SQL) (http://msdn.microsoft.com/ru-ru/library/ms188783.aspx) или что то другое?
Adventure Works for SQL Server 2012 (190Мб) (http://msftdbprodsamples.codeplex.com/releases/view/55330) -- учебно-тренировочная БД у меня развернется только через полчаса.
Примеры запросов с MSDN используют ее.
Предлагаю так же использовать её, чтобы всем было понятно, о чем идет речь.

akasha9
16-03-2013, 17:14
akasha9,
Цитата akasha9:
Выполнив выше приведенные манипуляции получил скрипт на создание таблицы-кучи, а не скрипт создания таблицы с индексами. »
Поясните пожалуйста ответ.
Вы имеете ввиду CREATE INDEX (Transact-SQL) или что то другое? »

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

То есть в итоге должно быть что то вроде этого но еще и с указанием используемых индексов:

USE [DBWorks]
GO
/****** Object: Table [dbo].[Table_1] ****** /
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table_1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DTM] [datetime] NOT NULL,
[NKA] [smallint] NULL,
[LKA] [smallint] NULL,
[UM] [real] NULL,
[AZ] [real] NULL,
[NMS_PT1] [smallint] NULL,
[NMS_VT1] [smallint] NULL,
[NMS_PT2] [smallint] NULL,
[NMS_VT2] [smallint] NULL,
[UP1] [real] NULL,
[UV1] [real] NULL,
[UP2] [real] NULL,
[UV2] [real] NULL,
[RP1] [float] NULL,
[RV1] [float] NULL,
[RP2] [float] NULL,
[RV2] [float] NULL,
[VP1] [float] NULL,
[VV1] [float] NULL,
[VP2] [float] NULL,
[VV2] [float] NULL,
[NBL] [smallint] NULL
) ON [PRIMARY]

lxa85
16-03-2013, 18:52
akasha9, На примере вышеупомянутой БД, т.к. для нее есть скрипты создания индекса.
Загрузил 2008R2, установил. На основе примере "Е. Создание индекса представления",
USE AdventureWorks2008R2;
GO
--Set the options to support indexed views.
SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT,
QUOTED_IDENTIFIER, ANSI_NULLS ON;
GO
--Create view with schemabinding.
IF OBJECT_ID ('Sales.vOrders', 'view') IS NOT NULL
DROP VIEW Sales.vOrders ;
GO
CREATE VIEW Sales.vOrders
WITH SCHEMABINDING
AS
SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Revenue,
OrderDate, ProductID, COUNT_BIG(*) AS COUNT
FROM Sales.SalesOrderDetail AS od, Sales.SalesOrderHeader AS o
WHERE od.SalesOrderID = o.SalesOrderID
GROUP BY OrderDate, ProductID;
GO
--Create an index on the view.
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON Sales.vOrders (OrderDate, ProductID);
GO
--This query can use the indexed view even though the view is
--not specified in the FROM clause.
SELECT SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Rev,
OrderDate, ProductID
FROM Sales.SalesOrderDetail AS od
JOIN Sales.SalesOrderHeader AS o ON od.SalesOrderID=o.SalesOrderID
AND ProductID BETWEEN 700 and 800
AND OrderDate >= CONVERT(datetime,'05/01/2002',101)
GROUP BY OrderDate, ProductID
ORDER BY Rev DESC;
GO
--This query can use the above indexed view.
SELECT OrderDate, SUM(UnitPrice*OrderQty*(1.00-UnitPriceDiscount)) AS Rev
FROM Sales.SalesOrderDetail AS od
JOIN Sales.SalesOrderHeader AS o ON od.SalesOrderID=o.SalesOrderID
AND DATEPART(mm,OrderDate)= 3
AND DATEPART(yy,OrderDate) = 2002
GROUP BY OrderDate
ORDER BY OrderDate ASC;
GO


Обратить внимание на
--Create an index on the view.
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON Sales.vOrders (OrderDate, ProductID);

Смотрим базу, находим вид Sales.vOrders, раскрываем индексы. ПКМ - создать сценарий (см. рисунок)
Получаем
USE [AdventureWorks2008R2]
GO

SET ARITHABORT ON
GO

SET CONCAT_NULL_YIELDS_NULL ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_NULLS ON
GO

SET ANSI_PADDING ON
GO

SET ANSI_WARNINGS ON
GO

SET NUMERIC_ROUNDABORT OFF
GO

/****** Object: Index [IDX_V1] Script Date: 03/16/2013 18:01:13 ******/
CREATE UNIQUE CLUSTERED INDEX [IDX_V1] ON [Sales].[vOrders]
(
[OrderDate] ASC,
[ProductID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

Что и требовалось получить.




© OSzone.net 2001-2012