|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Добрый день! Просьба дать совет. Как отключить проверку внешних ключей на всю базу? Есть скрипт создании базы с 30 таблицами с огромной кучей внешних ключей. При создании первой таблицы ключ ссылается на еще не созданную, и выдает ошибку, и так 30 раз. Хочу отключить эту проверку, чтобы создать все таблицы. А потом включить снова. Заранее благодарю! ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:05 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
VinniL, Сгенерировать скрипт и выполнить (все делать на нужной базе) генерация скрипта на выключение Код: sql 1. 2. 3. 4.
генерация скрипта на включение Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:20 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
А откуда взялся этот скрипт? Как бы он должен быть написан в правильной последовательности. Либо вам надо поставить таблицы в правильном порядке. Либо надо сначала создать все таблицы, а потом только создавать внешние ключи. К тому же может быть ситуация, когда есть ссылка A -> B -> C -> A . Тогда вам надо выкрутиться ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:22 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
VinniL, Что-то вроде этого: Код: sql 1.
Если чисто для fk - получаете их перечисление через служебные представления, а потом в курсоре в динамике их отключаете ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:23 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
entrypoint, Только нужно еще их сделать is_true ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:25 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Критик VinniL, Что-то вроде этого: Код: sql 1.
Если чисто для fk - получаете их перечисление через служебные представления, а потом в курсоре в динамике их отключаете В данном случае отключит все ограничения не только FK ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:34 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Критик entrypoint, Только нужно еще их сделать is_true что это ? имеете ввиду is_not_trusted ? Для этого FK нужно пересоздать ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 17:40 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Благодарю всех за ответы. Пошел долгим путем, вынести в начале скрипты создания всех таблиц, далее скрипт создания вторичных ключей. Пусть долгий, но зато наверняка. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 11:45 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
VinniL, в SSIS пакете можно отключить проверку целостности при выполнении задач потока данных. Создайте SSIS решение, для 30 таблиц максимум час работы на создание, можно и за 20 минут справиться. К тому же балк вставка. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 13:31 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Владислав Колосов VinniL, в SSIS пакете можно отключить проверку целостности при выполнении задач потока данных. Создайте SSIS решение, для 30 таблиц максимум час работы на создание, можно и за 20 минут справиться. К тому же балк вставка. VinniL, Единственно возможное решение - сделать правильные скрипты, которые сначала создают таблицы, потом ФК. Или поправить существующий скрипт (таблиц всего 30, работы на 10 минут). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 13:41 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
alexeyvg, SSIS как раз и решает эту проблему - особенно помогает при "замыкании" FK на ту же таблицу. Т.е. автоматизирует отключение и включение FK при загрузке данных. Я раньше не знал об этой галке и скриптами отключал. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 13:45 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Владислав Колосов alexeyvg, SSIS как раз и решает эту проблему - особенно помогает при "замыкании" FK на ту же таблицу. Т.е. автоматизирует отключение и включение FK при загрузке данных. Я раньше не знал об этой галке и скриптами отключал. То есть SSMS будет анализировать скрипт, и не выполнять в нём ALTER TABLE (или соотв указания в CREATE TABLE)? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 13:48 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
alexeyvg Единственно возможное решение - сделать правильные скрипты, которые сначала создают таблицы, потом ФК. Или поправить существующий скрипт (таблиц всего 30, работы на 10 минут). Ведь, если там ошибки, соответствующий батч просто не выполнится. И так, постепенно, все таблицы и констрейны создадутся. Единственно, если в скрипте есть какие то действия с данными, результат может быть некорректный. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 13:51 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Автору темы с моим почтением. https://srulbond1.blogspot.com/ Здесь блог про некую программку, в меру корявую, ибо делалась для себя, а не на продажу. А кто хочет взять, так только на правах дарённого коня. У ней есть опция генерации скрипта внешних ключей. И опция скрипта на их полное уничтожение. Излишне говорить, что оба скрипта надо сперва сохранить. Наше дело предложить, ваше дело отказаться. У моих юзеров лица вытягиваются, когда я им рассказываю, если рассказываю, как обошёл их внешние ключи. Лучше не рассказывать. Да. чтоб вы знали, сама программа только строит скрипты и ничего не стирает. Стираете вы собственноручно из Ентерпрайса. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 14:08 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
А это те же звери со скриптом на построение. Строить не ломать-прога может зависнуть до 3-х минут, ноу паник. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 14:23 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
alexeyvg alexeyvg Единственно возможное решение - сделать правильные скрипты, которые сначала создают таблицы, потом ФК. Или поправить существующий скрипт (таблиц всего 30, работы на 10 минут). Ведь, если там ошибки, соответствующий батч просто не выполнится. И так, постепенно, все таблицы и констрейны создадутся. Единственно, если в скрипте есть какие то действия с данными, результат может быть некорректный. Это не прокатит, если reference идут inline CREATE TABLE dbo.PurchaseOrderDetail ( PurchaseOrderID int NOT NULL REFERENCES Purchasing.PurchaseOrderHeader(PurchaseOrderID), LineNumber smallint NOT NULL, ProductID int NULL REFERENCES Production.Product(ProductID), UnitPrice money NULL, OrderQty smallint NULL, ReceivedQty float NULL, RejectedQty float NULL, DueDate datetime NULL, rowguid uniqueidentifier ROWGUIDCOL NOT NULL CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT (NEWID()), ModifiedDate datetime NOT NULL CONSTRAINT DF_PurchaseOrderDetail_ModifiedDate DEFAULT (GETDATE()), LineTotal AS ((UnitPrice*OrderQty)), StockedQty AS ((ReceivedQty-RejectedQty)), CONSTRAINT PK_PurchaseOrderDetail_PurchaseOrderID_LineNumber PRIMARY KEY CLUSTERED (PurchaseOrderID, LineNumber) WITH (IGNORE_DUP_KEY = OFF) ) ON PRIMARY; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 14:37 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
alexeyvg Владислав Колосов alexeyvg, SSIS как раз и решает эту проблему - особенно помогает при "замыкании" FK на ту же таблицу. Т.е. автоматизирует отключение и включение FK при загрузке данных. Я раньше не знал об этой галке и скриптами отключал. То есть SSMS будет анализировать скрипт, и не выполнять в нём ALTER TABLE (или соотв указания в CREATE TABLE)? Как внутри работает, я не подсматривал, настраивается чеком "проверять ограничения" в назначении потока. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2019, 16:32 |
|
Как отключить проверку внешних ключей при создании базы?
|
|||
---|---|---|---|
#18+
Владислав Колосов alexeyvg пропущено... А, интересно, не знал. То есть SSMS будет анализировать скрипт, и не выполнять в нём ALTER TABLE (или соотв указания в CREATE TABLE)? Как внутри работает, я не подсматривал, настраивается чеком "проверять ограничения" в назначении потока. Это опция включает или не включает настройки BCP механизма. Никаких altet table тут не делается. Если вы посмотрите SqlBulkCopy под C#, то там тоже есть эти настройки. Остальное происходит в ядре субд. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2019, 11:48 |
|
|
start [/forum/topic.php?fid=46&msg=39908421&tid=1686704]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 326ms |
total: | 449ms |
0 / 0 |