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

Откуда:
Сообщений: 68
Из процедуры надо создать другую процедуру в другой базе
что-то не выходит..."каменный цветок" :(

Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86) Nov 24 2008 13:01:59 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)


use trace
go
create proc aa23
as
begin
declare @sql nvarchar(max)
set @sql = N'
use DBTest2;
'+'g'+'o'+
'
create proc dbo._justify_linked_server_in_procs
as
begin
select 1
end
'+'g'+'o'

exec sp_sqlexec @sql
end
go


Вызов
exec aa23
дает

Server: Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'go'.
Server: Msg 111, Level 15, State 1, Line 9
'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.
29 сен 09, 18:36    [7721956]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
go не является командой языка TSQL.
29 сен 09, 18:37    [7721959]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
papa1
Member

Откуда:
Сообщений: 68
а как же указать базу назначения будучи по умолчанию в другой базе
29 сен 09, 18:39    [7721968]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
asdor
Member

Откуда: Москва
Сообщений: 473
papa1,

Наверное в вашем случае так:
use trace
go
create proc aa23
as
begin
declare @sql nvarchar(max)
set @sql = N'
use DBTest2;
create proc dbo._justify_linked_server_in_procs
as
begin
select 1
end

exec sp_sqlexec @sql
end
go

29 сен 09, 18:49    [7722003]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
papa1
Member

Откуда:
Сообщений: 68
так тоже пробовал
29 сен 09, 18:52    [7722008]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
papa1
Member

Откуда:
Сообщений: 68
papa1
так тоже пробовал

Server: Msg 111, Level 15, State 1, Procedure _justify_linked_server_in_procs, Line 7
'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.
29 сен 09, 18:53    [7722010]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
asdor
Member

Откуда: Москва
Сообщений: 473
Ну не поставил ковычки)))

use trace
go
create proc aa23
as
begin
declare @sql nvarchar(max)
set @sql = N
'use DBTest2;
create proc dbo._justify_linked_server_in_procs
as
begin
select 1
end'
exec sp_sqlexec @sql
end
go
И наверное можно и так
use trace
go
create proc aa23
as
begin
declare @sql nvarchar(max)
set @sql = N
'create proc DBTest2.dbo._justify_linked_server_in_procs
as
begin
select 1
end'
exec sp_sqlexec @sql
end
go
29 сен 09, 18:53    [7722011]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
papa1
Member

Откуда:
Сообщений: 68
asdor
...

И наверное можно и так
use trace
go
create proc aa23
as
begin
declare @sql nvarchar(max)
set @sql = N
'create proc DBTest2.dbo._justify_linked_server_in_procs
as
begin
select 1
end'
exec sp_sqlexec @sql
end
go


Server: Msg 166, Level 15, State 1, Line 1
'CREATE/ALTER PROCEDURE' does not allow specifying the database name as a prefix to the object name.
29 сен 09, 19:00    [7722039]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
el Pueblo
Member

Откуда: Харьков
Сообщений: 202
asdor
Ну не поставил ковычки)))

use trace
go
create proc aa23
as
begin
declare @sql nvarchar(max)
set @sql = N
'use DBTest2;
create proc dbo._justify_linked_server_in_procs
as
begin
select 1
end'
exec sp_sqlexec @sql
end
go
И наверное можно и так
use trace
go
create proc aa23
as
begin
declare @sql nvarchar(max)
set @sql = N
'create proc DBTest2.dbo._justify_linked_server_in_procs
as
begin
select 1
end'
exec sp_sqlexec @sql
end
go


в имени процедуры нельзя указывать имя базы так же как не удастся использовать use перед create proc
29 сен 09, 19:01    [7722043]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
papa1
Member

Откуда:
Сообщений: 68
Как же решить эту задачу ?
Процедура в одной базе должна создавать процедуру в другой базе.
29 сен 09, 19:19    [7722104]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
use master
go
exec tempdb.sys.sp_executesql N'create procedure _TEST_ as select db_name()'
go
use tempdb
go
exec _TEST_
?
-------------------------
There’s no silver bullet!
29 сен 09, 19:19    [7722107]     Ответить | Цитировать Сообщить модератору
 Re: создать другую процедуру в другой базе  [new]
papa1
Member

Откуда:
Сообщений: 68
locky
use master
go
exec tempdb.sys.sp_executesql N'create procedure _TEST_ as select db_name()'
go
use tempdb
go
exec _TEST_
?
-------------------------
There’s no silver bullet!


Большое спасибо! Cпаcли!
29 сен 09, 19:24    [7722122]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить