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

Откуда:
Сообщений: 4
Есть SQL-сервер на котором развернуто около 100 баз данных (databases)
В каждой базе данных есть одна и таже функция

Нужен скрипт, который сделает ALTER FUNCTION во всех базах данных

Пытаюсь сделать в цикле через динамический SQL, но не получается

Пробую вариант1:
	--организуется цикл. @db присваивается имя нужных баз данных
	set @sql1='use '+@db+' ALTER FUNCTION [dbo].[F1]....'
	execute sp_executesql @sql1

Выдается ошибка
'ALTER FUNCTION' must be the first statement in a query batch.

Пробую вариант2:
	--организуется цикл. @db присваивается имя нужных баз данных
	set @sql1=	'use '+@db
	set @sql2='ALTER FUNCTION [dbo].[GetBugDuration]
	execute sp_executesql @sql1
	execute sp_executesql @sql2

В этом случае тоже нет результата. sql2 выполняется на той базе, к которой осуществлен текущий коннект, а не тот, который требуется в @sql1

Помогите, как правильно решить задачу?
26 янв 12, 11:28    [11974068]     Ответить | Цитировать Сообщить модератору
 Re: Распространить Function на много баз данных  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
Skarj,

попробуйте такой способ
26 янв 12, 11:43    [11974179]     Ответить | Цитировать Сообщить модератору
 Re: Распространить Function на много баз данных  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

declare @db sysname
set @db = 'tempdb'

declare @procname varchar(100), @sql nvarchar(max)

set @sql = N'select db_name()'

set @procname = @db + '.dbo.sp_executesql'
exec @procname @sql

Posted via ActualForum NNTP Server 1.5

26 янв 12, 11:48    [11974218]     Ответить | Цитировать Сообщить модератору
 Re: Распространить Function на много баз данных  [new]
Skarj
Member

Откуда:
Сообщений: 4
Спасибо за помощь!!
Помогло и заработало как надо!
26 янв 12, 13:15    [11975052]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить