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

Откуда: г. Калуга
Сообщений: 1228
Взял извлек скрипт из существующей БД. Создал новую и накатил скрипт на неё.
Все прошло отлично, кроме одного места
SET ANSI_NULLS ON
GO
SET ANSI_PADDING OFF
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[FuelSell]') AND name = N'IX_FuelSell_By_AccountNumber')
CREATE NONCLUSTERED INDEX [IX_FuelSell_By_AccountNumber] ON [dbo].[FuelSell] 
(
	[AccountNumber] ASC
)
WHERE ([AccountNumber] IS NOT NULL)
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


валится с ошибкой
Сообщение 1934, уровень 16, состояние 1, строка 1
Ошибка CREATE INDEX. Следующие параметры SET содержат неверные значения: "ANSI_PADDING". Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представления, индексы для вычисляемых столбцов, отфильтрованные индексы и/или уведомления о запросах, методы типов данных XML и/или операции с пространственными индексами.


Собственно что не так? И о чем речь вообще? :))
Сама таблица
/****** Object:  Table [dbo].[FuelSell]    Script Date: 10/22/2015 12:13:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FuelSell]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[FuelSell](
	[RID] [int] NOT NULL,
	[SellID] [int] NOT NULL,
	.....
	[AccountNumber] [int] NULL,
	[SecondAccountNumber] [int] NULL,
 CONSTRAINT [PK_FuelSell] PRIMARY KEY CLUSTERED 
(
	[RID] ASC,
	[SellID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
22 окт 15, 12:55    [18311322]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
Konst_One
Member

Откуда:
Сообщений: 11677
SET ANSI_PADDING OFF
22 окт 15, 12:57    [18311336]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
minva
Собственно что не так? И о чем речь вообще? :))
Так в хелпе написано, что для фильтрованного индекса обязательное значение ANSI_PADDING = ON
22 окт 15, 13:01    [18311360]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1228
alexeyvg, все, разобрался... Только этот скрипт не я формировал, а получил я его путем создания сценария из существующей БД средствами SQL manager. Косячок стал быть у них...
22 окт 15, 13:29    [18311586]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
Glory
Member

Откуда:
Сообщений: 104751
minva
Косячок стал быть у них...

Нет
Косячок у вас. Это вы должны обеспечить в текущем соединении все необходимые и достаточные настройки.
Потому что эти настройки не хранятся в индексе.
22 окт 15, 13:32    [18311609]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1228
Glory,
тогда поясните пожалуйста.
Так был извлечен скрипт из существующей БД.
/****** Object:  Table [dbo].[FuelSell]    Script Date: 10/22/2015 12:13:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[FuelSell]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[FuelSell](
	[RID] [int] NOT NULL,
	[SellID] [int] NOT NULL,
	[AfsID] [smallint] NOT NULL,
	
	[AccountNumber] [int] NULL,
	[SecondAccountNumber] [int] NULL,
 CONSTRAINT [PK_FuelSell] PRIMARY KEY CLUSTERED 
(
	[RID] ASC,
	[SellID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET ANSI_PADDING OFF  --<<<-----------------------
GO

IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[FuelSell]') AND name = N'IX_FuelSell_By_AccountNumber')
CREATE NONCLUSTERED INDEX [IX_FuelSell_By_AccountNumber] ON [dbo].[FuelSell] 
(
	[AccountNumber] ASC
)
WHERE ([AccountNumber] IS NOT NULL)
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



C какого там появилась выделенная строка?

И почему тогда на это не ругается?
/****** Object:  Table [dbo].[CouponSeries]    Script Date: 10/22/2015 12:13:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CouponSeries]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[CouponSeries](
	[SeriesID] [int] NOT NULL,
	[CouponCode] [int] NOT NULL,
	[ProductCode] [int] NOT NULL,
	[Series] [varchar](10) NOT NULL,
	[Nominal] [int] NOT NULL,
 CONSTRAINT [PK_CouponSeries] PRIMARY KEY CLUSTERED 
(
	[SeriesID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_PADDING OFF
GO
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[CouponSeries]') AND name = N'IX_CouponSeriesByCouponCodeAndSeries')
CREATE UNIQUE NONCLUSTERED INDEX [IX_CouponSeriesByCouponCodeAndSeries] ON [dbo].[CouponSeries] 
(
	[CouponCode] ASC,
	[Series] 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
22 окт 15, 13:57    [18311825]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
Konst_One
Member

Откуда:
Сообщений: 11677
в вашем фильтр, поэтому ошибка при SET ANSI_PADDING OFF:
...
WHERE ([AccountNumber] IS NOT NULL)
...
22 окт 15, 14:01    [18311849]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1228
Konst_One, так, хорошо. Это понял. Осталось понять, почему индекс с фильтром, извлекся с OFF. Или "извлекатору" до этого пофиг?
22 окт 15, 14:06    [18311887]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
Glory
Member

Откуда:
Сообщений: 104751
minva
И почему тогда на это не ругается?

Вы открывали статью в хелпе про CREATE INDEX ?
Читали о том, какие установки необходимы и достаточны для создания разных индексов ?
22 окт 15, 14:06    [18311888]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
Glory
Member

Откуда:
Сообщений: 104751
minva
Осталось понять, почему индекс с фильтром, извлекся с OFF. Или "извлекатору" до этого пофиг?

SETы ниоткуда не извлекаются. Потому что они нигде не храняться
22 окт 15, 14:07    [18311900]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1228
Glory, тогда какая логика их включения-выключения при извлечении??? Почему после создания таблицы он стал OFF ,а перед созданием ON
22 окт 15, 14:17    [18311977]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
Glory
Member

Откуда:
Сообщений: 104751
minva
Почему после создания таблицы он стал OFF ,а перед созданием ON

Потому что вы в опциях скриптования так задали ?
22 окт 15, 14:20    [18311990]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1228
Glory, я то ничего не задавал. До вчерашнего дня я
1. вообще не знал про эту опцию, ибо не сталкивался
2. свято думал, что как я объекты в базе создал, так и могу их извлечь в виде скрипта 1 к 1. И при этом получить полностью рабочий скрипт.

А тут получается что если объект был создан при конкретно указанной включенной(или выключенной) опции, то скрипт его я получаю уже в зависимости от опций скриптования?
23 окт 15, 09:22    [18315111]     Ответить | Цитировать Сообщить модератору
 Re: Ansi_Padding переведите с русского на русский  [new]
Glory
Member

Откуда:
Сообщений: 104751
minva
Glory, я то ничего не задавал. До вчерашнего дня я
1. вообще не знал про эту опцию, ибо не сталкивался
2. свято думал, что как я объекты в базе создал, так и могу их извлечь в виде скрипта 1 к 1. И при этом получить полностью рабочий скрипт.

Если вы лично ничего не задали, то это не значит, что это не задано

minva
А тут получается что если объект был создан при конкретно указанной включенной(или выключенной) опции, то скрипт его я получаю уже в зависимости от опций скриптования?

Еще раз - настройки set НЕ храняться с индексом
23 окт 15, 09:24    [18315119]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить