Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
islam786 Member Откуда: Сообщений: 4 |
Добрый день. У меня на SQL сервере установлено много баз 1с. В каждой базе есть вот эта таблица "dbo.v8users" из нее мне нужно получить несколько столбцов. Из одной базы я получаю их вот так "SELECT * FROM base1c.dbo.v8users;". Но мне нужно одним запросом получить столбцы этой таблицы из всех баз. Как нужно сделать цикл? P.S Это мой первый код в SQL |
19 фев 14, 15:10 [15590658] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31778 |
Либо сделать вьюху с объединением всех dbo.v8users из нужных баз (см. CREATE VIEW) |
||
19 фев 14, 15:19 [15590761] Ответить | Цитировать Сообщить модератору |
vartAG Member Откуда: Сообщений: 17 |
Либо можешь иднамический вопрос написать, что-то типо этого: declare @ex varchar(max) select @ex = '' select @ex = @ex + 'select ''' + t.name + ''' as base, Column as Col from ' + t.name + '.dbo.Table union all ' from master.sys.databases t where name like '%test%' select @ex = SUBSTRING(@ex, 1, LEN(@ex) - 10) select @ex exec(@ex) |
19 фев 14, 15:53 [15591079] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
sp_msforeachdb
|
20 фев 14, 07:53 [15595209] Ответить | Цитировать Сообщить модератору |
MX_User Member Откуда: Сообщений: 27 |
Я что-то недопонял?SELECT * FROM base1c.dbo.v8users UNION SELECT * FROM 2_base1c.dbo.v8users UNION SELECT * FROM 3_base1c.dbo.v8users |
20 фев 14, 10:20 [15595775] Ответить | Цитировать Сообщить модератору |
Критик Member Откуда: Москва / Калуга Сообщений: 34710 Блог |
exec sp_msforeachdb 'USE ?; SELECT * FROM dbo.v8users' |
20 фев 14, 11:56 [15596681] Ответить | Цитировать Сообщить модератору |
vartAG Member Откуда: Сообщений: 17 |
Критик, Результирующих таблиц будет множество, как я понял автору этот вариант не подходит. Хотя может я его недопонял ) |
20 фев 14, 12:09 [15596820] Ответить | Цитировать Сообщить модератору |
MX_User Member Откуда: Сообщений: 27 |
vartAG, Результирующий таблиц будет один, при использовании union |
20 фев 14, 13:29 [15597720] Ответить | Цитировать Сообщить модератору |
MX_User Member Откуда: Сообщений: 27 |
Сорри, не то посмотрел |
||
20 фев 14, 13:30 [15597734] Ответить | Цитировать Сообщить модератору |
islam786 Member Откуда: Сообщений: 4 |
Спасибо всем. Решил сделать для каждой базы отдельно. Теперь другой вопрос. Есть база в названии которой есть знак "-", поэтому выдается ошибка "Неправильный синтаксис около конструкции "-".". Менять название базы не хочется потому, что придется менять у всех пользователей, а их много. Как можно указать имя базы что бы не было ошибок? |
20 фев 14, 14:09 [15598222] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
[есть база в названии которой есть знак -] |
20 фев 14, 14:11 [15598241] Ответить | Цитировать Сообщить модератору |
islam786 Member Откуда: Сообщений: 4 |
Спасибо Glory, |
20 фев 14, 14:13 [15598260] Ответить | Цитировать Сообщить модератору |
islam786 Member Откуда: Сообщений: 4 |
Спасибо большое. С этим я разобрался. Теперь другой вопрос. Как настроить права пользователя на сервер так, что бы он мог только использовать этот запрос и больше ничего на сервере не мог делать? |
20 фев 14, 14:23 [15598354] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
В каждой базе назначить этому пользователю права на данную таблицу |
||
20 фев 14, 14:31 [15598439] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |