次のことを考慮してください。
USE [$(db_name)]
GO
IF SCHEMA_ID('$(schema_name)') IS NULL
-- Must use dynamic SQL because 'CREATE SCHEMA' must be the first
-- statement in a query batch.
EXECUTE('CREATE SCHEMA [$(schema_name)]')
-- User already exists at this point.
GRANT SELECT, EXECUTE ON SCHEMA::[$(schema_name)] TO [$(user_name)]
を介して実行するsqlcmd.exe
と、エラーは報告されず、スキーマが作成されますが、アクセス許可は付与されません。次に、SSMSの最後の行を実行すると(sqlcmd
変数を代入して)、期待どおりに機能します。
SQL Serverが私が求めることを実行しない理由はありますか?
編集:言うべきだった、それはSQL Server 2008(10.50.1617)です。
編集2:主よ、デプロイフレームワークがユーザーを削除して再作成していたことがわかりました。すべての提案をありがとう。