3

以下の完全なエラー:

エラー 1 SQL01268: .Net SqlClient データ プロバイダー: メッセージ 1834、レベル 16、状態 1、行 1 ファイル 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\testdatabase.mdf' は上書きできません。データベース「testdatabase」で使用されています。スキーマ比較5 25 0

私はいくつかのフォーラムでこれについて読みましたが、かなりの数の人々がこれを取得しており、おそらく一部の人にとっては、ファイルパス名をデータベースなどにパラメータ化するか、「ファイル名とファイルとログファイルのパスを無視する」にチェックマークを付ける必要がありました。比較を行います-これは無駄にしようとしました。

同じ/類似の問題を抱えている他の人: http://social.msdn.microsoft.com/Forums/en/vstsdb/thread/5a8b8c52-adb4-4a5a-95ed-09ad22bacf60

基本的に、ターゲットとソースに使用しているデータベースに関係なく、このエラーが発生するようです。あるテーブルを持つ新しいデータベースと、テーブルのない別の名前の別のデータベースを作成し、単一のテーブルを持つデータベースを使用して、テーブルのないデータベースのスキーマを更新しようとしても、エラーが発生します。SQL Server Express が狂ってしまったようです。以前、スキーマ比較ツールを問題なく使用したことを覚えています。すべてのデータベース接続が作成されました。これを行うために多くの方法を試しましたが、無駄になりました。つまり、別のフォルダーにある *.mdf db のコピーを指すか、プログラム ファイルの mysql ディレクトリの DATA フォルダーから何かを削除するなどです。

また、スキーム比較ツールが作成するいくつかのファイルを削除するという同様の問題を誰かが解決したと読んだこともあると思いますが、それらは *.sql タイプであると思いますが、どのファイルかはわかりません。

4

3 に答える 3

1

ターゲット DB が既に存在する場合は、初めてデプロイする前に、Management Studio から削除してください。

VSでSQL Server 2008ウィザードを使用してデータベースプロジェクトを作成するときに元の接続を確立していたときに、SQL Server Management Studioを使用してデータベースを手動で作成していました。データベースが存在することが検出されるまで、続行することはできません。その後、初めて Deploy ステップに到達すると、上記と同じエラーがスローされました。Management Studio に入り、DB を削除してからデプロイを試みたところ、うまくいきました。興味深いことに、毎回削除する必要なく、毎回デプロイされています。

于 2012-09-09T16:15:04.427 に答える
1

この問題は、データベース ファイルが既に存在するために発生します。

Visual Studio データベース プロジェクト内で以下を試してください。

スキーマ比較を作成します。

メニューに移動: データ > スキーマ比較 > エクスポート先 > エディター

スクリプトが作成されたら、物理ファイルを追加するデータベース変更コマンドを削除します。次に、接続を作成し、SQLCMD モードに切り替えて (スクリプトにフォーカスがあることを確認してください)、スクリプトを実行します。

SQLCMD モード アクセスに切り替えるには: [データ] > [Transact-SQL エディター] > [SQLCMD モード]

于 2012-01-16T14:13:05.740 に答える
1
      RESTORE DATABASE B FROM DISK = 'A.bak'
      WITH MOVE 'DataFileLogicalName' TO 'C:\SQL Directory\DATA\B.mdf',
      MOVE 'LogFileLogicalName' TO 'C:\SQL Directory\DATA\B.ldf',
      REPLACE     ---> Needed if database B already exists
于 2014-01-17T11:44:01.827 に答える