powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перекачка данных - способы.
6 сообщений из 6, страница 1 из 1
Перекачка данных - способы.
    #32050480
Та
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно перекачать данные из одной базы в другую, 100 таблиц. Структуры разные.
С DTS-ом получается геморно, и приходится много раз повторять одно и то же. Причем из-за связей все таблицы сразу перекачать не получается.
Возникла идея снять (disable?) все связи, спокойно перекачать всё через DTS (как сохранить скрипт?), потом активизировать связи.
Ну или удалить связи, а потом опять их создать (опять нужен скрипт).
Как это можно сделать наиболее быстро и корректно?
Как деактивизировать все связи в базе?
...
Рейтинг: 0 / 0
Перекачка данных - способы.
    #32050486
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Как деактивизировать все связи в базе?
вот такая сп :
1й параметр - имя таблицы.
2й - 1=включить, 0=выключить
все referential constraints для
данной таблицы.
3й - если 0=сообщать о проделанной работе


CREATE PROCEDURE sp_CheckAllFK(
@TableName sysname,
@Check bit = 1,
@NoMsgs bit = 1)
AS

set NOCOUNT on

declare @TABLE_OWNER sysname, @TABLE_NAME sysname, @COLUMN_NAME sysname,
@NAME sysname, @text varchar(2000)

create table #fkeys(
PKTABLE_QUALIFIER sysname,
PKTABLE_OWNER sysname,
PKTABLE_NAME sysname,
PKCOLUMN_NAME sysname,
FKTABLE_QUALIFIER sysname,
FKTABLE_OWNER sysname,
FKTABLE_NAME sysname,
FKCOLUMN_NAME sysname,
KEY_SEQ sysname,
UPDATE_RULE sysname,
DELETE_RULE sysname,
FK_NAME sysname,
PK_NAME sysname,
DEFERRABILITY sysname
)

INSERT #fkeys exec sp_fkeys @TableName

if (@@ROWCOUNT = 0) RETURN

DECLARE fks scroll cursor for select
FKTABLE_OWNER,
FKTABLE_NAME ,
FKCOLUMN_NAME,
FK_NAME
from #fkeys

OPEN fks
FETCH next from fks into @TABLE_OWNER , @TABLE_NAME , @COLUMN_NAME, @NAME
WHILE (@@FETCH_STATUS >=0)
BEGIN
if @Check = 1
set @text='ALTER TABLE [' + rtrim(@TABLE_OWNER) + '].[' + rtrim(@TABLE_NAME) +'] CHECK CONSTRAINT [' + rtrim(@NAME) +']'
else
set @text='ALTER TABLE [' + rtrim(@TABLE_OWNER) + '].[' + rtrim(@TABLE_NAME) +'] NOCHECK CONSTRAINT [' + rtrim(@NAME) +']'
exec (@text)
if @NoMsgs=0
print 'Constraint '+rtrim(@NAME)+' changed'
FETCH next from fks into @TABLE_OWNER , @TABLE_NAME , @COLUMN_NAME, @NAME
END

CLOSE fks

DEALLOCATE fks

drop table #fkeys

GO
...
Рейтинг: 0 / 0
Перекачка данных - способы.
    #32050501
odrie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, спасибо :))
...
Рейтинг: 0 / 0
Перекачка данных - способы.
    #32050752
Та
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какой способ перекачки данных из базы в базу с отличающейся структурой все-таки, наиболее корректный? Не поплывут ли связи после того как их отключить/включить?
...
Рейтинг: 0 / 0
Перекачка данных - способы.
    #32050764
Фотография Белов Владимир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если ты только ты один будешь работать с БД, то связи не поплывут, а если нет, то ...
...
Рейтинг: 0 / 0
Перекачка данных - способы.
    #32050792
Та
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С базой-приемником работаю я одна, а с источником - нет.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перекачка данных - способы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]