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

Откуда: Москва
Сообщений: 598
Версия:
Microsoft SQL Server 2012 - 11.0.2100.60 (X64) 
	Feb 10 2012 19:39:15 
	Copyright (c) Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)


Есть некая процедура. Допустим:
USE main
DECLARE @d int
UPDATE JORNAL set price=2*price FROM Jornal WHERE docID=@d


Есть 100 баз данных, они все идентичны и там везде есть таблица Jornal, только разные имена, в зависимости от имени пользователя компьютера. Эта процедура лежит в основной базе main. Допустим пользователь comp1 вызывает эту процедуру.

Как передать в эту процедуру название базы comp1.

Чтобы получилось:
USE comp1
DECLARE @d int
UPDATE JORNAL set price=2*price FROM Jornal WHERE docID=@d


Конечно можно закинуть эту процедуру в 100 баз, и потом если надо поправить, то править в 100 базах. Но это долго.
Хотелось бы чтобы процедуру вызывали с одного места, все пользователи.
19 июн 14, 12:53    [16188545]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
https://www.sql.ru/faq/faq_topic.aspx?fid=104

Но тому, кто придумал делать 100 баз с одинаковой структурой, передавайте пламенный привет.

Сообщение было отредактировано: 19 июн 14, 13:12
19 июн 14, 13:11    [16188713]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
гр к
Guest
Гавриленко Сергей Алексеевич
https://www.sql.ru/faq/faq_topic.aspx?fid=104

Но тому, кто придумал делать 100 баз с одинаковой структурой, передавайте пламенный привет.

По базе на представительство, например.
Если из вар-тов связи с головной структурой - только флэшка с оказией.
19 июн 14, 13:18    [16188778]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
minya13_85
Конечно можно закинуть эту процедуру в 100 баз, и потом если надо поправить, то править в 100 базах. Но это долго.

а вы что ли руками собираетесь это делать?
19 июн 14, 13:30    [16188894]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
гр к
Если из вар-тов связи с головной структурой - только флэшка с оказией.


Как и зачем тогда к ним обращаться из одной процедуры?
19 июн 14, 13:32    [16188903]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
гр к
Гавриленко Сергей Алексеевич
https://www.sql.ru/faq/faq_topic.aspx?fid=104

Но тому, кто придумал делать 100 баз с одинаковой структурой, передавайте пламенный привет.

По базе на представительство, например.
Если из вар-тов связи с головной структурой - только флэшка с оказией.
А ничего, что у автора Есть 100 баз данных, они все идентичны и там везде есть таблица Jornal, только разные имена, в зависимости от имени пользователя компьютера. ?

Сообщение было отредактировано: 19 июн 14, 13:47
19 июн 14, 13:32    [16188907]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
AHAPXuCT
Member

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

Ну а чтобы работать с базами было еще веселее, можно создать еще дополнительные таблицы Jornal - по одной на каждый месяц года. И даже на каждый день года можно создать по таблице. По крайней мере скучать на работе вам не придётся.
19 июн 14, 13:41    [16188983]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
гр к
Guest
Гавриленко Сергей Алексеевич
гр к
пропущено...

По базе на представительство, например.
Если из вар-тов связи с головной структурой - только флэшка с оказией.
А ничего, что у автора Есть 100 баз данных, они все идентичны и там везде есть таблица Jornal, только разные имена, в зависимости от имени пользователя компьютера. ?

У нас несколько десятков - каждая с идентичной структурой, названия разные.
Никакой беды в этом не вижу.
19 июн 14, 13:50    [16189081]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
гр к
Гавриленко Сергей Алексеевич
пропущено...
А ничего, что у автора Есть 100 баз данных, они все идентичны и там везде есть таблица Jornal, только разные имена, в зависимости от имени пользователя компьютера. ?

У нас несколько десятков - каждая с идентичной структурой, названия разные.
Никакой беды в этом не вижу.
Как вызывать удалённо процедуру-то?
Через флешку?
19 июн 14, 13:52    [16189099]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
iap
гр к
пропущено...

У нас несколько десятков - каждая с идентичной структурой, названия разные.
Никакой беды в этом не вижу.
Как вызывать удалённо процедуру-то?
Через флешку?
Глупость спросил. Привозите на флешке базу, восстанавливаете её у себя.
19 июн 14, 13:53    [16189110]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
гр к
Гавриленко Сергей Алексеевич
пропущено...
А ничего, что у автора Есть 100 баз данных, они все идентичны и там везде есть таблица Jornal, только разные имена, в зависимости от имени пользователя компьютера. ?

У нас несколько десятков - каждая с идентичной структурой, названия разные.
Никакой беды в этом не вижу.
Я не вижу ни одной причины так делать на одном сервере. Если, конечно, это не какая-то упоротая система, которая так делает сама.
19 июн 14, 13:55    [16189123]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Объясню для чего это. Есть основная база. Там сидят все продажи продукции, за весь период времени.
Есть 100 операторов, которые набивают изделия в документ для продажи. И вот каждый оператор набивает изделия для своих клиентов, в свою базу, там они "гоняют" цены (т.е. делают скидки, наценки, различные акции) Если всё верно, он выгружает это в основную базу. Так вот есть процедуры на всякие скидки, наценки, сезонные акции. Оператор должен вызвать эту процедуру в свою базу, чтобы прогнать цену у себя.
19 июн 14, 13:56    [16189134]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104760
minya13_85
Конечно можно закинуть эту процедуру в 100 баз, и потом если надо поправить, то править в 100 базах. Но это долго.

Запустить скрипт создания/изменения процедуры 100 раз на разных базах проще, чем админить перекрестные права доступа между базами.
Если конечно у вас все не используют sa для доступа
19 июн 14, 13:59    [16189154]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
minya13_85
Объясню для чего это. Есть основная база. Там сидят все продажи продукции, за весь период времени.
Есть 100 операторов, которые набивают изделия в документ для продажи. И вот каждый оператор набивает изделия для своих клиентов, в свою базу, там они "гоняют" цены (т.е. делают скидки, наценки, различные акции) Если всё верно, он выгружает это в основную базу. Так вот есть процедуры на всякие скидки, наценки, сезонные акции. Оператор должен вызвать эту процедуру в свою базу, чтобы прогнать цену у себя.
И этот весь геморрой вместо того, чтобы сделать одну таблицу с полем идентификатор_оператора для предварительного внесения данных? Мсье знает толк в извращениях.
19 июн 14, 14:00    [16189166]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
гр к
Guest
Гавриленко Сергей Алексеевич
гр к
пропущено...

У нас несколько десятков - каждая с идентичной структурой, названия разные.
Никакой беды в этом не вижу.
Я не вижу ни одной причины так делать на одном сервере. Если, конечно, это не какая-то упоротая система, которая так делает сама.

Автор пишет, что Есть 100 баз данных, они все идентичны и там везде есть таблица Jornal, только разные имена, в зависимости от имени пользователя компьютера.
По-моему, речь идет о 100 серверах на 100 компьютерах, кот-е прилинкованы к "главному".
У нас так сделано в тех точках, где со связью более-менее.
19 июн 14, 14:00    [16189167]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Гавриленко Сергей Алексеевич
И этот весь геморрой вместо того, чтобы сделать одну таблицу с полем идентификатор_оператора для предварительного внесения данных? Мсье знает толк в извращениях.


Конечно не много не понял, про одну таблицу с полем ID оператора. Но эту систему придумал не я, она уже давно используется. Поэтому приходится так извращаться. И сейчас стоит задача , описанная выше.
19 июн 14, 14:07    [16189226]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
minya13_85
Объясню для чего это. Есть основная база. Там сидят все продажи продукции, за весь период времени.
Есть 100 операторов, которые набивают изделия в документ для продажи. И вот каждый оператор набивает изделия для своих клиентов, в свою базу, там они "гоняют" цены (т.е. делают скидки, наценки, различные акции) Если всё верно, он выгружает это в основную базу. Так вот есть процедуры на всякие скидки, наценки, сезонные акции. Оператор должен вызвать эту процедуру в свою базу, чтобы прогнать цену у себя.


так базы операторов на том же инстансе находятся, что и основная база, или нет? если нет, то почему самим базам не дать одинаковые имена?
19 июн 14, 14:07    [16189231]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Shakill
так базы операторов на том же инстансе находятся, что и основная база, или нет? если нет, то почему самим базам не дать одинаковые имена?
Да, на одном сервере. И что будет? 100 баз с одинаковыми именами на одном сервере?
19 июн 14, 14:11    [16189268]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104760
minya13_85
Оператор должен вызвать эту процедуру в свою базу, чтобы прогнать цену у себя.

А если один оператор вызовет процедуру для базы другого оператора ?
Или вообще для всех ?
19 июн 14, 14:12    [16189276]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
Glory
А если один оператор вызовет процедуру для базы другого оператора ?
Или вообще для всех ?

Так не сможет. Когда они заходят в программу, каждый попадают только в свою базу.
19 июн 14, 14:18    [16189346]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104760
minya13_85
Когда они заходят в программу, каждый попадают только в свою базу.

Ну так там же не будет процедуры. Она будут в другой базе. И в ней будет динамический запрос. Из-за которого придется дать права на другие базы
19 июн 14, 14:21    [16189368]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
minya13_85
Гавриленко Сергей Алексеевич
И этот весь геморрой вместо того, чтобы сделать одну таблицу с полем идентификатор_оператора для предварительного внесения данных? Мсье знает толк в извращениях.


Конечно не много не понял, про одну таблицу с полем ID оператора. Но эту систему придумал не я, она уже давно используется. Поэтому приходится так извращаться. И сейчас стоит задача , описанная выше.
Ну так спросите у того, кто придумал это, как решить вашу задачу.
19 июн 14, 14:42    [16189605]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Раз базы одинаковые, то ничего не мешает во всех создать одну и ту же процедуру.
Тогда, объявляя переменную типа sysname и заполняя её полным именем процедуры,
включая имя базы, можно вызвать нужную процедуру через эту переменную. Или я туплю?
19 июн 14, 14:48    [16189655]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
Или я туплю?

Нет. Просто ТС считает ненужным и трудоемким создание 100 процедур.
19 июн 14, 14:51    [16189682]     Ответить | Цитировать Сообщить модератору
 Re: Передать параметр наименование базы в процедуру  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
На меня наверное наедут сейчас по полной, но могу предложить вот что:

EXEC SP_EXECUTESQL N'
DECLARE @Query NVARCHAR(MAX) = '' SELECT * FROM ['' + @DB + ''].dbo.TABLE '' -- ваши запросы
EXEC SP_EXECUTESQL @Query', @DB SYSNAME, ....
19 июн 14, 15:00    [16189770]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить