1

我在一个脚本中为 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

它有效!感谢丹的贡献!

4

1 回答 1

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;
于 2013-09-17T11:13:35.030 回答