読者です 読者をやめる 読者になる 読者になる

データ層アプリケーション(DAC)のインポートでエラーが出るケース

2015/03/16 追記:SSDT(SQL Server Data Tools) 12.0.50226.0 で解消されました。

SQL Database のリージョン移動で失敗したので色々試した結果、再現する手順が分かりました。
固定データベースロール(固定データベース ロールの権限 (データベース エンジン)) が所持しているスキーマに対して、

GRANT ~ on schema:<schema> to <user>

しているデータベースだと発生するようです。
パターン1

use master
go
create database fail_bacpac
go
use fail_bacpac
go
create user u1 without login
go
grant select on schema::db_datareader to u1
go

パターン2

use master
go
create database fail_bacpac2
go
use fail_bacpac2
go
create user u1 without login
go
create schema s1 authorization db_ddladmin
grant select on schema::s1 to u1
go

実行結果

両方とも、

Error SQL72045: スクリプトの実行エラーです。実行されたスクリプト:
GRANT SELECT 
 ON SCHEMA::[db_datareader] TO [u1]
 AS [db_datareader];

というようなエラーが発生します。
最後の AS [~] が余計で構文エラー になっています。
GRANT (スキーマ権限の許可) (Transact-SQL)

ちなみに 固定データベースロール で無い場合*1は、このエラーが発生しませんでした。

Connect にも登録しました。
https://connect.microsoft.com/SQLServer/feedback/details/824184/-bacpac

*1:[public] や、自分で作成したロール