0

msdeploy (バージョン 2) を使用して、マシン A からマシン B にデータベースを転送しています。

マシン A のデータベースには、マシン B に存在しないユーザーが何人かいるため、転送は (部分的に) 失敗し、次のメッセージが表示されます。

Error Code: ERROR_SQL_EXECUTION_FAILURE
More Information: An error occurred during execution of the database script. 
The error occurred between the following lines of the script: "3" and "5". 
The verbose log might have more information about the error. 
The command started with the following: "CREATE USER [someDomain\someUser] FOR LOGIN [someDomain" 
Windows NT user or group 'someDomain\someUser' not found. 
Check the name again. http://go.microsoft.com/fwlink/?LinkId=178587

ユーザーの作成以外は、データベースは転送されているようです。この失敗の後、データベースがどのような状態になっているのか誰か知っていますか?

msdeploy を使用して、ユーザーなしで (または特定のユーザーなしで) データベースを転送する方法はありますか?

4

1 に答える 1

1

Web 配置は、SMO (SQL 管理オブジェクト) を使用してスクリプトを作成し、SQL データベースのスクリプトを適用し、ほとんどの SMO 設定を dbfullsql プロバイダーで公開します (したがって、これらのオプションのほとんど: http://msdn.microsoft.com/en -us/library/microsoft.sqlserver.management.smo.transfer_properties.aspx )。この種の login-not-exists または user-not-found エラーが原因でユーザーをスキップしたい場合は、スクリプト オプション copyAllUsers=false を同期のソースに追加することでこれを実行できるはずです。例えば:

msdeploy.exe -verb:sync -source:dbfullsql="Data Source=.\SQLExpress;Initial Catalog=MySourceDb;User Id=localUser;Password=LocalPass",copyAllUsers=false -dest:dbfullsql="Data Source=RemoteSQLServer;Initialカタログ=MyDestDb;ユーザー ID=remoteUser;パスワード=RemotePass"

ちなみに、データベースが同期されているように見えることに驚いています-実際にはそうではないと思います。アクセス許可がある場合、最初に接続を試みたときにデータベースがまだ存在していなかった場合、Web Deploy はデータベースを作成しますが、スクリプトの実行の非常に早い段階で失敗が発生しました。Web Deploy dbfullsql 同期はによって処理されると思いますデフォルト (データベースの作成はスクリプトの実行とは別であり、処理されません)。したがって、データベースは事前同期されていない場所に存在する可能性がありますが、データがそこに存在することは期待できません。

于 2012-04-30T21:42:50.607 に答える