我在一个脚本中为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的贡献!
答案 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;