2013-09-17 3 views
1

У меня проблемы с созданием схемы для всех баз данных на сервере sql в одном скрипте.Создание схемы для всех баз данных на сервере Sql

declare @ssql varchar(2000) 

set @ssql= 'use [?] 
    GO 
    CREATE SCHEMA [sp_schema]' 
exec sp_msforeachdb @ssql 
go 

Но я всегда получаю эти ошибки:

Неправильный синтаксис около 'GO'. «CREATE SCHEMA» должно быть первым оператором в пакете запросов. И если я использую другое утверждение, например CREATE USER => все работает нормально.

Любые идеи? Спасибо.


Ok Я нашел его.

Это должно быть так:

declare @ssql varchar(2000) 

set @ssql= 'use [?] 
     EXEC (''CREATE SCHEMA [sp_schema]'')' 
exec sp_msforeachdb @ssql 
go 

И это работает !! Спасибо за ваш вклад!

ответ

0

GO на самом деле не является командой SQL Server. Он используется как разделитель партий в таких приложениях, как SQL Server Management Studio.

Я думаю, вы можете просто удалить GO.

В противном случае, это должно работать:

declare @ssql varchar(2000); 

set @ssql= ' 
    use [?] 
    declare @sql varchar(100)=''create schema [sp_schema]'' 
    exec(@sql) 
' 

exec sp_msforeachdb @ssql; 
Смежные вопросы