2012-04-27 2 views
0

マシンAからマシンBにデータベースを転送するのにmsdeploy(バージョン2)を使用しています。ユーザー作成時にmsdeployが失敗したときのSQL Serverデータベースの状態は何ですか?

マシン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を使用してユーザーなしで(または特定のユーザーなしで)データベースを転送する方法はありますか?

答えて

1

Web Deployは、SMO(SQL Management Objects)を使用して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 = "データソース=。\ SQLExpress;初期カタログ= MySourceDb;ユーザーID = localUser;パスワード= LocalPass"、copyAllUsers = false -dest:dbfullsql = "データソース= RemoteSQLServer;初期カタログ= MyDestDb;ユーザーID = remoteUser;パスワード=リモートパス"

ちなみに、dbが同期されているように見えるのは驚いています。 。アクセス権を持っている場合、最初に接続を試みたときにWebExがデータベースを作成していない場合、スクリプトの実行の初期にエラーが発生し、Web Deploy dbfullsqlの同期がデフォルト(dbの作成はスクリプトの実行とは別に行われ、処理されません)。したがって、dbは事前同期していない場所に存在する可能性がありますが、データがそこに存在するとは思われません。

+0

あなたの最後のポイントに:あなたは正しいです。同期を試みる前に、バックアップファイルからデータベースを復元していました。まだ作成されていないデータベースと同期する場合、データベース内にオブジェクトは存在しません。したがって、データベースの状態は作成されますが、オブジェクトは含まれません。 – steenhulthin

+0

あなたの解決策はこの問題の解決策ですが、ユーザーの中にはいくつかの役割を作成するために問題が解決されません。しかし、それはおそらく別の問題だと思います。 – steenhulthin

関連する問題