Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 аттач нескольких баз  [new]
Loveozi
Member

Откуда:
Сообщений: 5
Проблемы с аттачем нет, все работает корректно, делаю так:
USE master
CREATE DATABASE <dataname> ON
(FILENAME =' путь \<dataname>.mdf'),
(FILENAME = 'путь \<dataname>.ldf')
FOR ATTACH
GO

Но дело в том, что я хочу приаттачить несколько баз, у них у всех одинаковые пути, но разные <dataname>, можно ли создать такой параметр, в который поместить путь до файлов?
Примерно так:
USE master
DECLARE @path varchar(100)
SET @path='путь'
GO
CREATE DATABASE <dataname> ON
(FILENAME = @path + '<dataname>.mdf'),
(FILENAME = @path + '<dataname>.ldf')
FOR ATTACH
GO
*В данном скрипте ругается на @path
25 окт 11, 13:21    [11494968]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Динамическим запросом.
25 окт 11, 13:22    [11494980]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
komrad
Member

Откуда:
Сообщений: 5760
Loveozi,

так ?

-- таблица со списком БД
create table db (db_name varchar(100))
go

-- заполняем нужными БД
insert into db (db_name)
select 'database1'
insert into db (db_name)
select 'database2'
insert into db (db_name)
select 'database3'
insert into db (db_name)
select 'database4'
insert into db (db_name)
select 'database5'
go

-- генерим скрипт  для аттача всех БД
declare @path varchar(255)
select @path='c:\mssql_data\'
select 'create database ['+DB_NAME+ '] on (filename = '''+@path+''+DB_NAME+'.mdf''), filename='''+@path+''+DB_NAME+'.ldf'') for attach'
from db
order by db_name
go
25 окт 11, 13:56    [11495378]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
komrad
Member

Откуда:
Сообщений: 5760
Loveozi,

а вообще, эти скрипты можно в экселе очень быстро нагенерить и в любом кол-ве
25 окт 11, 13:57    [11495393]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
Loveozi
Member

Откуда:
Сообщений: 5
komrad, меня интересует именно, как путь правильно прописать в filename с параметром
сделал по вашему примеру:
@path='D:\...\...\'
FILENAME = ' '@path+'<dataname>.mdf' (база уже существует, создавать не надо)
*выдает ошибку: "Имя объекта или столбца отсутствует или пусто. Убедитесь, что каждый из столбцов в инструкции SELECT INTO имеет имя. Для других инструкций проверьте наличие пустых имен-псевдонимов. Не допускаются псевдонимы, определенные как [] или "". Измените псевдоним на допустимое имя."
25 окт 11, 14:13    [11495592]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
komrad
Member

Откуда:
Сообщений: 5760
Loveozi,

скрипт то какой в итоге получился?
25 окт 11, 14:23    [11495735]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
Loveozi
Member

Откуда:
Сообщений: 5
komrad,

USE master
DECLARE @path varchar(100)
SET @path='D:\..\..\'
GO

CREATE DATABASE <dbname> ON
(FILENAME = ' '+@path+'<dbname>.mdf'),
(FILENAME = ' '+@path+'<dbname>.ldf')
FOR ATTACH
GO
25 окт 11, 14:32    [11495851]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
komrad
Member

Откуда:
Сообщений: 5760
Loveozi,

я для чего свой скрипт привел?

занеси в него названия своих БД, путь к файлам (@path) и выполни

результат покажи
25 окт 11, 14:40    [11495940]     Ответить | Цитировать Сообщить модератору
 Re: аттач нескольких баз  [new]
Loveozi
Member

Откуда:
Сообщений: 5
komrad,
все внес, ругается на "+". который рядом с @path

я переписал, получилось так:
USE master
DECLARE @path varchar(100),
@sql AS NVARCHAR(805)
SET @path='D:\..\..\'

SET @sql= 'create database ['+'<dbname>'+ '] on
(filename = '''+@path+'<dbname>.mdf''),
(filename='''+@path+'<dbname>.ldf'') for attach'

EXEC(@sql);
GO

но теперь для каждой базы свою переменную придется заводить, но по-другому вроде не получается. всем спасибо
25 окт 11, 14:45    [11495982]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить