2013-08-19 4 views
1

Компьютер мертв, но я смог скопировать все файлы .MDF и .LDF с жесткого диска.Несколько sp_attach_db в одном запросе

Я пытаюсь использовать sp_attach_db для присоединения баз данных к новому серверу с помощью «Инструмента запросов» в базу данных SQL Server 2012.

Это работает, если я делаю это один за другим:

sp_attach_db 'uni_11_2010','c:\Program Files\Microsoft SQL Server\MSSQL11.UNI\MSSQL\DATA\uni_11_2010.mdf', 'c:\Program Files\Microsoft SQL Server\MSSQL11.UNI\MSSQL\DATA\uni_11_2010_log.LDF'; 

Но проблема в том, что у меня есть 500 различных баз данных для крепления. Я создал текстовый файл со всеми командами 500 sp_attach_db, по одному на каждую строку, разделенную ;

Но это работает только в том случае, если я ввожу одну команду в то время.

Было бы замечательно, если бы я мог сделать все 500 в один раз .....

Большое спасибо за всю помощь.

+0

Как вы это делаете? – RBarryYoung

ответ

2

Если ваш «инструмент запроса» использует SQLCMD за кулисами, вам может потребоваться установить терминатор партии (чтение GO) между каждым утверждением или в конце.

sp_attach_db 'dater', 'c:\data\dater.mdf', 'c:\data\dater.ldf'; 
GO 
+0

Спасибо за подсказку Брайан. Похоже, что это не сработало: неправильный синтаксис рядом с «GO». Возможно, есть другой способ, чем использовать проприетарный инструмент запроса? (Извините, я не знаком с MS SQL ...) – user2298034

0

мне удалось сделать это с помощью файла BAT и OSQL:

osql -S .\sql2012 -E -o dumpfile_dbattach.txt -Q "sp_attach_db @dbname = 'uni_1', @filename1='C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\uni_1.mdf',@filename2='C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\uni_1_log.ldf'" 

Тема может быть закрыта.

+0

Чтобы «закрыть» его, просто примите свой ответ. –

Смежные вопросы