Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - [решено] копирование данных между базами

Ответить
Настройки темы
MSFT SQL Server - [решено] копирование данных между базами

Пользователь


Сообщения: 101
Благодарности: 0

Профиль | Отправить PM | Цитировать


SQL 2000. Под ним, на одной машине, крутиться около 60 баз. Надо скопировать данные из одной БД в другие. Вопрос - вот такое стандартное решение приемлимо? Или как-то это более корректно надо решать?

BEGIN TRANSACTION
INSERT INTO TEST1.dbo.field1 (id, sd, wert, err, note)
SELECT id, sd, wert, err, note FROM PRIMA.dbo.field
WHERE id = 10
INSERT INTO TEST2.dbo.field1 (id, sd, wert, err, note)
SELECT id, sd, wert, err, note FROM PRIMA.dbo.field
WHERE id = 10
INSERT INTO TEST3.dbo.field1 (id, sd, wert, err, note)
SELECT id, sd, wert, err, note FROM PRIMA.dbo.field
WHERE id = 10
..........
........
....
COMMIT TRANSACTION

Отправлено: 21:47, 19-01-2009

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


Не пробовал в одной транзакции писать в несколько БД, но по идее это вполне корректное использование.

Отправлено: 23:10, 19-01-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 101
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ну что же, раз возражений нет считаем такой ход нормальным

Отправлено: 23:43, 19-01-2009 | #3


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


А я бы сделал еще Stored Procedure и выполнял ее с параметром и в планировщик. А ход вполне допустимый

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:21, 20-01-2009 | #4


Аватара для Amin

Новый участник


Сообщения: 38
Благодарности: 3

Профиль | Отправить PM | Цитировать


Ход совершенно правильный и корректный. В отличие от всяких DTS, вы всегда сможете свою процедуру отладить / поменять / корректно перенести на другой сервер.

Несколько моментов:
- имена объектов БД вы записали как-то странно У вас поля - в скобочках явно...
- пользователь dbo подразумевается "по умолчанию". Если вы ничего не мудрили с владельцами объектов, то вместо DB.dbo.table можете смело писать DB..table /* да, именно через ДВЕ точки !! */
- использовав в начале скрипта конструкцию USE DB; вы укажете текущую рабочую БД - и в этом случае в скрипте явно указывать потребуется только БД, отличную от текущей.
То есть ваше
Цитата:
BEGIN TRANSACTION
INSERT INTO TEST1.dbo.field1 (id, sd, wert, err, note) SELECT id, sd, wert, err, note FROM PRIMA.dbo.field WHERE id = 10
INSERT INTO TEST2.dbo.field1 (id, sd, wert, err, note) SELECT id, sd, wert, err, note FROM PRIMA.dbo.field WHERE id = 10
INSERT INTO TEST3.dbo.field1 (id, sd, wert, err, note) SELECT id, sd, wert, err, note FROM PRIMA.dbo.field WHERE id = 10
..........
COMMIT TRANSACTION
превратится в
Цитата:
BEGIN TRANSACTION
USE PRIMA;
INSERT INTO DB1 (id, sd, wert, err, note) SELECT id, sd, wert, err, note FROM table WHERE id = 10
INSERT INTO DB2 (id, sd, wert, err, note) SELECT id, sd, wert, err, note FROM table WHERE id = 10
INSERT INTO DB3 (id, sd, wert, err, note) SELECT id, sd, wert, err, note FROM table WHERE id = 10
..........
COMMIT TRANSACTION
Упрощайте свои скрипты ! SQL - тоже код, и обращение с ним должно быть соответствующим. (т.е. комментарии, использование переменных, выкидка откровенно лишнего кода (типа указания одной и той же БД 50 раз вместо одной команды USE), ясный синтаксис, и т.п.)

-------
xmpp:Aminux@jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:46, 01-02-2009 | #5


Пользователь


Сообщения: 101
Благодарности: 0

Профиль | Отправить PM | Цитировать


Amin, хорошие ремарки. Учту.

Отправлено: 00:37, 08-02-2009 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - [решено] копирование данных между базами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - Копирование данных с HD Glebush Microsoft Windows 2000/XP 9 05-01-2010 18:37
Прочее - [решено] Проблема: малая скорость передачи данных между 2-мя компами pucokp Сетевые технологии 15 09-08-2009 01:57
[решено] Резервное копирование и восстановление данных с сохранением прав пользователей xeel Microsoft Windows NT/2000/2003 11 12-12-2006 02:35
Резервное копирование базы данных Non-Stop Общий по Linux 8 02-12-2006 11:02
[решено] Резервное копирование файлов баз данных через команды операционной системы legko Microsoft Windows NT/2000/2003 5 06-10-2005 08:41




 
Переход