为Sql Server中的所有数据库创建架构

时间:2013-09-17 11:00:14

标签: sql sql-server schema

我在一个脚本中为sql server上的所有数据库创建架构时遇到问题。

declare @ssql varchar(2000)

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

但我总是遇到这些错误:

'GO'附近的语法不正确。 'CREATE SCHEMA'必须是查询批处理中的第一个语句。 如果我使用另一个语句,如CREATE USER =>一切正常。

有什么想法吗? 感谢。


好 我找到了。

应该是这样的:

declare @ssql varchar(2000)

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

它有效!! 感谢Dan的贡献!

1 个答案:

答案 0 :(得分: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;