1

1 つのスクリプトで SQL サーバー上のすべてのデータベースのスキーマを作成する際に問題があります。

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 に答える