Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
minva Member Откуда: г. Калуга Сообщений: 1209 |
Взял извлек скрипт из существующей БД. Создал новую и накатил скрипт на неё. Все прошло отлично, кроме одного места 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] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11561 |
SET ANSI_PADDING OFF |
22 окт 15, 12:57 [18311336] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31778 |
|
||
22 окт 15, 13:01 [18311360] Ответить | Цитировать Сообщить модератору |
minva Member Откуда: г. Калуга Сообщений: 1209 |
alexeyvg, все, разобрался... Только этот скрипт не я формировал, а получил я его путем создания сценария из существующей БД средствами SQL manager. Косячок стал быть у них... |
22 окт 15, 13:29 [18311586] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Нет Косячок у вас. Это вы должны обеспечить в текущем соединении все необходимые и достаточные настройки. Потому что эти настройки не хранятся в индексе. |
||
22 окт 15, 13:32 [18311609] Ответить | Цитировать Сообщить модератору |
minva Member Откуда: г. Калуга Сообщений: 1209 |
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] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11561 |
в вашем фильтр, поэтому ошибка при SET ANSI_PADDING OFF:... WHERE ([AccountNumber] IS NOT NULL) ... |
22 окт 15, 14:01 [18311849] Ответить | Цитировать Сообщить модератору |
minva Member Откуда: г. Калуга Сообщений: 1209 |
Konst_One, так, хорошо. Это понял. Осталось понять, почему индекс с фильтром, извлекся с OFF. Или "извлекатору" до этого пофиг? |
22 окт 15, 14:06 [18311887] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Вы открывали статью в хелпе про CREATE INDEX ? Читали о том, какие установки необходимы и достаточны для создания разных индексов ? |
||
22 окт 15, 14:06 [18311888] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
SETы ниоткуда не извлекаются. Потому что они нигде не храняться |
||
22 окт 15, 14:07 [18311900] Ответить | Цитировать Сообщить модератору |
minva Member Откуда: г. Калуга Сообщений: 1209 |
Glory, тогда какая логика их включения-выключения при извлечении??? Почему после создания таблицы он стал OFF ,а перед созданием ON |
22 окт 15, 14:17 [18311977] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Потому что вы в опциях скриптования так задали ? |
||
22 окт 15, 14:20 [18311990] Ответить | Цитировать Сообщить модератору |
minva Member Откуда: г. Калуга Сообщений: 1209 |
Glory, я то ничего не задавал. До вчерашнего дня я 1. вообще не знал про эту опцию, ибо не сталкивался 2. свято думал, что как я объекты в базе создал, так и могу их извлечь в виде скрипта 1 к 1. И при этом получить полностью рабочий скрипт. А тут получается что если объект был создан при конкретно указанной включенной(или выключенной) опции, то скрипт его я получаю уже в зависимости от опций скриптования? |
23 окт 15, 09:22 [18315111] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Если вы лично ничего не задали, то это не значит, что это не задано
Еще раз - настройки set НЕ храняться с индексом |
||||
23 окт 15, 09:24 [18315119] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |