0
以下を考慮してください。 sqlcmd.exe
を介して実行するとスキーマの作成後にSQL Serverがアクセス許可を適用しない
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)]
、エラーは報告されず、スキーマが作成されますが、許可が付与されていません。その後、SSMSの最後の行(sqlcmd
の代わりに)を実行すると、期待どおりに動作します。
SQL Serverが私の質問をしない理由はありますか?
編集:は、SQL Server 2008(10.50.1617)と言っているはずです。
編集2: Oh lordは、デプロイメントフレームワークがユーザーを削除して再作成していることを確認しました。あなたの提案をありがとう。
'GRANT'文を動的SQLとして実行しようとしましたか?ただのアイデア... – Bridge
私は同じEXECUTEで実行しようとしましたが、サーバーはそれを好きではありませんでした。別のEXECUTEとして実行しようとはしていません。 –
即時の疑わしいスコープ、Execute内の何かがそれ自身のスコープで実行されている、私はそこにも助成金を入れます。それが動作するかどうか、なぜ動作しないのか、なぜ動作しないのかは分かりません。 –